草庐IT

串行通信

全部标签

S7-1200和1500PLC与条码枪建立TCP_IP通信的具体方法示例

S7-1200和1500PLC与条码枪建立TCP_IP通信的具体方法示例今天和大家分享西门子S7-1200和1500PLC如何获取条码枪的扫描数据,这种案例中一般PLC作为TCP/IP的客户端(只接收数据,不发送数据),条码枪作为TCP/IP的服务器。如下图所示,在指令—通信—开放式用户通信中可以找到相关的通信指令,这里可以看到有TRCV_C和TRCV两个接收指令,这两者的区别是TRCV_C是建立连接并接收数据集成在一起的,而TRCV是没有建立连接,只负责接收数据的。我们这里使用TRCV_C来举例说明:如下图所示,我们拖拽TRCV_C指令到OB1中,此时系统会自动生成一个背景DB块,点击确定即

c# - 使用 ServiceController 类与 Windows 服务通信

我有一个由两个服务组成的Windows服务项目,service1和service2。我们如何在这两个服务之间进行通信?例如,我们如何让service1启动service2?我可以使用ServiceController类来执行此操作吗?您对此有何建议? 最佳答案 ServiceController类包含一个采用int的ExecuteCommand方法。因此,如果您可以使用非常有限的参数,您的两个服务可以通过相互发送ExecuteCommand消息来进行通信。但是,正如其他张贴者评论的那样,WCF可能是更好的答案。您可以创建命名管道或在

windows - 我可以使用什么来代替 Unix 管道在 Windows 上进行进程间通信?

我有一个启动子进程的应用程序。子进程从标准输入读取要操作的文件。对于某些操作,它需要一个输入文件,其中包含有关如何处理它所操作的文件的信息——我们称之为“控制文件”。控制文件的名称也从标准输入中读取。父应用程序可以使用临时文件作为控制文件,但我更愿意避免使用真正的磁盘备份文件。在Linux上,这很简单:我可以创建一个Unix管道,fork,在启动子进程之前关闭管道的各个端点,然后使用/dev/fd/3(或任何文件描述符)作为控制文件名,然后将控制数据写入父应用程序中的管道。或者,我可以在/tmp(或其他任何内容)中使用命名管道。我怎样才能在Windows上实现类似的功能?Windows

c - 在 Windows 内核中打开、读取和写入串行端口

我正在用C编写Windows内核驱动程序,我需要通过串行设备(特别是COM3)发送和接收数据。我被困在CreateFile、ReadFile和WriteFile函数上,因为这些似乎是在内核中不起作用的用户空间函数。我错了吗?或者,如果没有,从Windows内核中打开和使用串行端口的最佳方法是什么?非常感谢。 最佳答案 你需要ZwCreateFile,ZwReadFile和ZwWriteFile在内核模式下工作的函数。 关于c-在Windows内核中打开、读取和写入串行端口,我们在Stac

windows - Cygwin - 串行端口列在/dev 但 stty 报告无效参数

与Arduino兼容的设备在我的计算机上枚举为虚拟COM端口,但stty报告错误并且cat未从中收到任何信息。~$ls-al/dev/ttyS14crw-rw-rw-1user.nameNone117,14Feb1516:26/dev/ttyS14~$stty.exe-F/dev/ttyS1457600cs8stty:/dev/ttyS14:Invalidargument现在,用Putty打开端口(COM15)就可以正常工作了。关闭Putty后,stty正常工作,没有报错:~$stty.exe-F/dev/ttyS1457600cs8cat也是如此,它现在从端口接收数据。想必Putty

c# - Windows 和/或用户控件之间通信的模式/方法

我目前正在开发一个应用程序,我将使用C#和WPF打开多个窗口。是否有一种模式或通用方法可用于帮助促进打开的Windows或/和UserControl之间的通信?例如,一个窗口,我们称它为“层次结构窗口”,可能会显示世界上国家、省份和城市的层次结构。除此之外,还有几个其他窗口可以显示省或市,例如OR允许您创建省或市。在创建新城市的情况下,我的“城市窗口”与我的“层次结构窗口”就添加城市或删除城市进行沟通的最佳方式是什么?请记住,创建城市时甚至可能不会打开“层次结构窗口”。此时,无需响应/操作。 最佳答案 有两种常见的方法:使用依赖注入

Windows x64 中使用 JRE x86 的 Java 串行 I/O

我有一个Java应用程序在Windows764位上运行,但在32位版本的JRE上运行。我需要此应用程序与串行com端口通信,显然我需要一点帮助。:)在您建议RXTX之前,我已经尝试过32位和64位版本的RXTXDLL。要么因为32位JRE无法加载64位DLL而失败,要么因为32位DLL给出java.lang.UnsatisfiedLinkError而失败:java.lang.UnsatisfiedLinkError:\cache\bundle1030\version0.0\bundle.jar-lib\0\lib\win32\rxtxSerial.dll:Can'tfinddepend

c++ - 在 C++ 中的 Windows 串行端口上设置 low_latency 标志

我有一个使用boostasio打开串口的程序。默认情况下,串行端口具有使线路保持空闲的延迟。在Windows平台上,我看到了30毫秒的延迟,而在Linux平台上,延迟是20毫秒。对于Linux环境,我发现“linux.h”的“ioctl”类有一种方法可以使用一些标志来设置串行设置(以及我需要的:low_latency)。代码如下:boost::asio::basic_serial_port::native_typenative=serial_port_.native();//serial_port_istheboost'sserialportclass.structserial_str

c# - 客户端和服务器无法通信,因为它们不具备通用算法,C# SslStream

以下是我在Windows10上为客户端/服务器控制台应用程序进行相互SSL身份验证的设置:有一个服务器监听器控制台应用程序只接受TLS1.0连接。客户端控制台应用程序使用SslStream.AuthenticateAsClient配置安全连接并使用TLS1.2连接。我使用以下示例进行相互SSL身份验证:http://www.codeproject.com/Articles/326574/An-Introduction-to-Mutual-SSL-Authentication服务器代码:sslStream.AuthenticateAsServer(certificate,true,Ssl

windows - 64 位应用程序与 32 位进程通信

我有一个使用32位第三方库的32位应用程序。现在我必须将我的应用程序设为64位,以便它可以利用64位地址空间(大内存)。由于我无法将32位库加载到64位应用程序进程中,我正在考虑在第三方库上创建32位可执行包装器,并使用IPC(命名管道/套接字)从我的64位应用程序进行通信。所以我的问题是他们这样做会有什么问题吗?此外,如果我必须在64位系统上安装我的应用程序,所有与我的应用程序相关的文件都将被复制到“c:\ProgramFiles”目录。现在我可以将我的32位第三方exe包装器保留在同一个“c:\ProgramFiles”中,还是我需要复制到“c:\ProgramFiles(x86)