哎,又来提问了,还是关于ClientSocket,惭愧
ClientSocket与PLC通信,发送指令后PLC会返回不同寄存器的值。
比如我现在用两个定时器不断发送指令(分别读取两个寄存器的值),
而PLC每 接收到我发的指令 就会返回当时寄存器的值,格式完全相同,只是内容不同(从内容上看不出来自于哪个寄存器)
我在OnRead事件用ReveiceBuf函数读取,问题就是我怎么区分收到的数据 是哪个寄存器的值呢?
说一下我想到的思路:
1、用多个ClientSocket组件,相当于多个客户端,但是这个很麻烦,绝对不是最好的方法
2、用IdTCPClient组件,采用阻塞模式,这样就不存在区分的问题了,但是有隐患。如果我需要多个数据同时发送,等待时间 会不会有点长。而且需要一个数据发送不成功,并不影响别的数据的发送(多个定时器发送不同的数据内容)
3、多线程。。。没用过。。。不知道该怎么处理
其实问题很简单,就是通过一个端口读取不同寄存器的值,我需要对不同的寄存器做不同的处理,但是我区分不出来数据来自于哪个寄存器
比如我现在用两个定时器不断发送指令(分别读取两个寄存器的值),
而PLC每 接收到我发的指令 就会返回当时寄存器的值,格式完全相同,只是内容不同(从内容上看不出来自于哪个寄存器)
我在OnRead事件用ReveiceBuf函数读取,问题就是我怎么区分收到的数据 是哪个寄存器的值呢?
说一下我想到的思路:
1、用多个ClientSocket组件,相当于多个客户端,但是这个很麻烦,绝对不是最好的方法
2、用IdTCPClient组件,采用阻塞模式,这样就不存在区分的问题了,但是有隐患。如果我需要多个数据同时发送,等待时间 会不会有点长。而且需要一个数据发送不成功,并不影响别的数据的发送(多个定时器发送不同的数据内容)
3、多线程。。。没用过。。。不知道该怎么处理
其实问题很简单,就是通过一个端口读取不同寄存器的值,我需要对不同的寄存器做不同的处理,但是我区分不出来数据来自于哪个寄存器
...全文
相关推荐
ServerSOCKET和ClientSOCKET
恢复DELPHI 6 以后 无 SERVERSOCKET和CLIENTSOCKET控件包
delphi socket(ClientSocket,ServerSocket)简单实例
delphi socket(ClientSocket,ServerSocket)简单实例
Delphi 下ServerSocket和ClientSocket 的通信实例
较为完备的Delphi开发环境下的 ServerSocket和ClientSocket 的通信实例, 初学者易掌握的服务器和客户端之间的通信技巧
ClientSocket
基于AnsySocket,对socket的简单操作,可结合这个对即时通讯技术有一定的了解。
演示ClientSocket反复连接进程句柄数不变
在服务端不存在或没开启时,clientsocket反复连接服务端会导致程序句柄数急速增加,最后系统资源耗尽出错,本demo较好的解决了这一问题.


网络及通讯开发

