• 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,价钱也不贵,配套使用做工控开发比较简单实用的。

  • 相关阅读:
    Linux-交叉编译(常用工具的配置)
    数据结构—前缀树Trie的实现原理以及Java代码的实现
    掌握Explain分析性能瓶颈、避免索引失效
    Python零基础入门-9类
    ps插件Coolorus for Mac中文激活版
    1040 有几个PAT (分数 25)【C++】
    Java中异常的捕获与处理
    在排序数组中查找元素的第一个和最后一个位置
    jQuery的学习(一篇文章齐全)
    CISP全真模式测试题(二)
  • 原文地址:https://blog.csdn.net/weixin_45707491/article/details/127136786