DELPHI XE 与PLC通讯(INTCPSERVER 二进制)
2019-04-10 08:57
2126 查看
一、与PLC通讯采用TCPSERVER方式
二、配合PLC发送二进制数据。
[code]var i: integer; RecClient: TIdContext; buf: TIdBytes; begin SetLength(buf, 2); buf[0] := ord('W'); buf[1] := BintoInt(Edit7.Text); with c_tcp_list_all.LockList do try for i := 0 to count - 1 do begin RecClient := items[i]; if (RecClient.Binding.PeerPort = strtoint(Edit2.Text)) and (RecClient.Binding.PeerIP = Edit1.Text) then begin RecClient := TIdContext(items[i]); RecClient.Connection.Socket.write(buf); end; end; finally c_tcp_list_all.UnlockList; end;
三、用到的几个小函数
[code]// 十进制 to 二进制 function IntToBin(Value: LongInt; Size: integer): String; var i: integer; begin Result := ''; for i := Size - 1 downto 0 do begin if Value and (1 shl i) <> 0 then begin Result := Result + '1'; end else begin Result := Result + '0'; end; end; end; // 二进制 to 十进制 function BintoInt(Value: String): LongInt; var i, Size: integer; begin Result := 0; Size := Length(Value); for i := Size downto 1 do begin if Copy(Value, i, 1) = '1' then Result := Result + (1 shl (Size - i)); end; end; function floatBintoInt(Value: String): real; var i, Size: integer; begin Result := 0; Size := Length(Value); for i := Size downto 1 do begin if Copy(Value, i, 1) = '1' then Result := Result + 1 / (1 shl i); end; end;
四、总结
相关文章推荐
- mysqld启动“ Can't start server: Bind on TCP/IP port: Address already in use Do you already have anothe
- 基于QTcpSocket和QTcpServer的Tcp通讯以及QDataStream序列化数据
- 欧姆龙CP系列PLC以太网modbusTCP通讯
- TCP_client and server in py
- socket 编程入门教程(一)TCP server 端:6、创建“通讯 ”嵌套字
- Remote Connection via Proxy Server in TCP/IP Socket
- Exception in thread "main" java.lang.NoClassDefFoundError: TCPServer (wrong name: intimeMessage/TCP
- 开启redis-server报错 # Creating Server TCP listening socket *:6379: bind: Address already in use--解决方法
- Simple TcpClient and TcpServer in Java
- Simple TCP/IP Echo Server & Client Application in C#
- 'IOKING' TCP Transmission Server Engine ('云猴'©TCP通讯服务器引擎)(预告版)
- tcpserver error address already in use - bind(2) rails
- JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)
- tcp server in c
- socket 编程入门教程(一)TCP server 端:3、sockaddr与sockaddr_in
- 基于TCP/IP的Matlab Modbus与M340 PLC通讯
- shareplex 错误处理一例 Cop: Address already in use tcp server bind addr port - exiting
- service structure flowchart [mobile to server via HTTP RESTful API and TCP/IP in a map]
- 基于QTcpSocket和QTcpServer的Tcp通讯以及QDataStream序列化数据
- JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)