我们买了个串口转TCP的转换器,将他连接到我们的串口设备上,然后我写了个客户端程序,串口服务器作为TCP服务端:
var
 buf:array of byte;
begin
 client.Active:=false;
 client.host:='192.168.1.213';
 client.Port:=2000;
 client.Active:=true;
 ret:=client.Socket.Connected; setlength(buf,5);
 buf[0]:=$c0;
 buf[1]:=3;
 buf[2]:=$39;
 buf[3]:=0;
 buf[4]:=$fc; total:=client.Socket.Sendbuf(buf,5); 
end;
 然后在clientsocket的接收事件中写了个messagebox("aaa"),结果发现该事件没有被激活,也就是socket没有收到数据.
procedure TForm1.clientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
 showmessage('aaa');
end;

解决方案 »

  1.   

    那东东装上之后虚拟出一块网卡?如果是的话应该跟操作网卡没什么区别,这年头这种转换器还有市场?
    你怎么二边都是client?
    应该只是client端指定服务器端的IP和port,然后再active :=true;
    服务器端
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    serversocket1.Port :=2000;
    serversocket1.Active :=true;
    end;
    procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
    socket.SendText('test');
    end;
    客户端:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    clientsocket1.Host :='192.168.1.213';
    clientsocket1.Port :=2000;
    clientsocket1.Active :=true;
    end;
    procedure TForm1.ClientSocket1Read(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
    showmessage('aaa');
    end;
      

  2.   

    “然后在clientsocket的接收事件中写了个messagebox("aaa"),结果发现该事件没有被激活,也就是socket没有收到数据.”当然不会有事件发生。因为你的代码只是Client发送数据到串口服务器,而串口服务器并不会主动回送数据到你的Client,因此你的Client不会发生接收事件。你应该在连接串口服务器串口那端的机器上再写个程序,这个程序将能通过串口接收到你上面的Client程序发送过去的数据,而这个程序从串口写的数据则会被发送到上面的那个Client程序。