读书人

(抢救)delphi 串口转网口的设计

发布时间: 2013-11-29 13:49:33 作者: rapoo

(急救)delphi 串口转网口的设计
最近要求做一个串口通信转成网口通信的程序设计,没有做过,一点理不出头绪来。
基本模式是这样的:有一个自己做的模拟数据通信版,一个周立功的串口转网口的模块。然后,我要做的就是通过周立功模块(模块的网口网线连接我的计算机网口,我要通过这个网线)从模拟数据通信板那里得到数据进行处理。另外有个周立功的IP地址配置的软件,用DELPHI做。我现在不知道用什么控件,什么属性,怎么设计。
有没有做过的,请给我说说吧,请详细一点哦。谢谢啦! delphi?网口
[解决办法]
简单啊,就是个socket通讯,最简单的一种就是周立功的模块端的网口是socket服务端,通过他的软件设置好模块的IP及通讯端口,保证跟你的PC在相同局域网网段,你PC做个socket客户端,把你分配的IP及端口填好(模块里面网口转串口应该是透传,周立功的模块里应该写好的)你上位机以串口的命令格式从网口往模块发,写好socket客户端的数据接收,基本就OK了。
[解决办法]
在我的资源里就有
http://download.csdn.net/detail/tcmakebest/6032017
[解决办法]
串口通信转成网口通信,就是 串口服务器
1、选择的以太网工作方式,TCP / UDP Server / Client
2、配置好串口服务器的IP、串口波特率、数据位等
然后就是socket的编程了
[解决办法]
不是用周立功的软件设版子的通讯方式吗 一般TCP/UDP可选 ,软件可以设版子的IP啊,比如设192.168.1.100,端口 1000 ,那么你ClientSocket 要连接的IP和端口也就是192.168.1.100 端口1000啊。
版子有模式设置吗,Client模式,Server模式,有的好的转换器还有好多别的模式可选。如果你用ClientSocket的话,版子模式就应该设ServerSocket。什么波特率 数据位 校验位 应该也都是在周立功版子的那个软件上根据下位机硬件通讯参数去设好。一切设置妥当,就算你自己不编程,直接网上下个sockettool工具都可以连接发命令调试了。
[解决办法]
用TTcpClient 和 TTCpServer 这个2个控件。相当犀利的。
[解决办法]
你先确认下,你程序与串口服务器的关系。是程序主动连接串口服务器?还是串口服务器主动连接你的程序
你上图,串口服务器设置了TCP client,说明是串口服务器主动连接你的程序了。
你的程序需要 TCPServer-端口9072,串口服务器连接上后,就可以通过socket进行数据发送和接收了。


[解决办法]
从你的图片来看你设的是TCP Client,目标IP是它要连的TCP server 的IP地址,就是192.168.1.18,9072.
以上是你图片中看到的信息。

一般你要实现的那种通讯,最好把周立功模块设成TCP Server 然后它的IP 是192.168.1.178 端口是9071 ,你PC是TClientSocket 去连这个server. 设置IP和端口就是 192.168.1.178 和9071.

try
if not ClientSocket.Active then
begin

ClientSocket.Host := '192.168.1.178';
ClientSocket.Port := 9071;
ClientSocket.Active:=true;
end;
except
showmessage(' TCP/IP连接异常,请检查端口连接及使用情况! ');
exit;
end;

然后 clientsocket.Socket.SendBuf(sbuf[0],IntTemp);
sbuf[0]是一个byte数组,存放你的命令字节IntTemp 是命令长度。

ClientSocketRead事件里面定义一个接收byte数组rbuf,去接收下位机的应答。

length:=Socket.ReceiveLength;
setlength(rbuf,length);
for i:=low(rbuf) to high(rbuf) do
begin
rbuf[i]:=0
end;

Socket.ReceiveBuf(rbuf[0],length);

就这样。

[解决办法]
“工作方式”“工作端口” -- 串口服务器
“目标IP“,”目标端口“ -- PC
UDP方式可以用 TUdpSocket控件、 Indy中的TIdUDPClient
Tclientsocket/Tserversocket这是TCP方式的控件


[解决办法]
不就是一个版子机通讯么,数据量和负载又都不大,为什么选可靠性没TCP好的UDP呢,监控做数据分析的话还是TCP好一些的。
[解决办法]
数组开大些没所谓,反正占用内存空间也不多。
[解决办法]
可以的,
只要你的软件配置和串口服务器的配置对应,就可以实现可选通信模式。

不过实际应用一种模式应该足够了,串口服务器-TCP Client,软件为Server,这样内网、外网都可以用了。

读书人网 >.NET

热点推荐