• Lazarus上好用的 Indy TCP client 组件


    Indy组件功能强大,Delphier们再清楚不过了,它的 Lazarus 版本一样优秀。

    步骤:

    1、窗体上放上  IdTCPClient1

    2、设置IP和端口,及超时

          Var  lTCPPort;

          IdTCPClient1.Host:= Form1.Edit1.Text;
          lTCPPort:= StrToInt(Form1.Edit2.Text);
          IdTCPClient1.Port:= lTCPPort;
          IdTCPClient1.ConnectTimeout:= 5000;
     

    3、打开端口

          if not IdTCPClient1.Connected then
             try
                IdTCPClient1.Connect;
             except  
             end;

    3、发送字符串

    var sStr: String;

    IdTCPClient1.IOHandler.WriteLn(sStr); 

    可能遇到的问题:

    Indy 这东西是阻塞式的,在 Unix/Linux 上用没问题,但在windows上用会出问题 --- 屏幕有时被‘冻’上了(Lazarus 是跨平台的,android, ios, macos, linux, solaris, win32, win64, wince都能用,所谓的一套代码到处编译)。

    解决办法:

    IdTCPClient1.ConnectTimeout:= 5000;
    这个东西会影响屏幕,超时值小了对卫星链路和国际互联网链路等传输时不利,5000有点夸张,但3000还是要的,也就是3秒。如果是在国内用或在局域网中用,取值300毫秒也就足够了。总之,超时时间会影响屏幕刷新。解决的办法很简单,Indy 套件里有另外一个 Component 叫 IdAntiFreeze,把它放在窗体上就可以了,不需要写任何代码。

     

    计算机上传统串口已经消失的差不多了,要么USB-串口,要么TCP透传,TCPClient 做这东西正合适,WCH有TCP-UART的芯片,网上电商上也有卖现成的转换接头做TCPServer,价钱也不贵,配套使用做工控开发比较简单实用的。

  • 相关阅读:
    数据结构学习系列之用队列实现栈功能与用栈实现队列功能
    python-UnitTest学习笔记
    用白嫖的Adobe正版软件,减少应届毕业生的慢就业、不就业等现象
    JUC并发编程系列详解篇十三(悲观锁VS乐观锁)
    独特思路分析WPF架构
    信奥中的数学:排列组合
    Linux C应用编程-4-信号
    从此 Typora 代码块有了颜色
    什么是域名租用?
    Apache arrow顶级项目调试
  • 原文地址:https://blog.csdn.net/weixin_45707491/article/details/127136786