在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
使用串口SPCOMM接收数据的时候0x11和0x13无法接受,从时间间隔上看来可以接收,但是无法显示。网上查错误得: ------------------------------------------------------------------------ OutX_XonXOffFlow/InX_XonXoffFlow:这个属性是指进行发送/接收时的软件握手标志,两个握手信号之间的数据被认为是通讯数据,收到握手信号后,通讯就中止了。 FOutx_XonXoffFlow := True; XOffChar/XOnChar:这是指握手的字节,默认的初始中,有 FXonChar := chr($11); 至此,真相大白。0x11,0x13被占用为通讯握手信号,自然不会得到正确的处理。 问题找到了,解决也很容易。只需要在Comm的初始化中,自己定义 Comm.Inx_XonXoffFlow := False; 用Delphi 实现串口通信,常用的方法有:使用控件,如Mscomm和Spcomm控件等;使用API函数;在Delphi 中调用其它串口通信程序。 使用API方法的优点是比较适合于编写较为复杂的低层次通信程序,但缺点是编写串口通信程序较为复杂,需要掌握大量通信知识。 Spcomm是Small-Pig Team开发的一个第三方Delphi串口控件,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作,且编程简单、通用性强、可移植性好。在Delphi软件开发中已经成为一个被广泛应用的串口通信开发控件。
Spcomm共实现了三个类:串口类Tcomm、读线程类TreadThread以及写线程类TwziteThread[1]。Tcomm的某个实例在方法StartComm中打开串口,并实例化了一个读线程ReadThread和一个写线程WriteThread,它们和主线程之间进行消息的传递,实现串口通信。 在Delphi7.0中安装Spcomm串口通信控件的方法为:选择Delphi7.0的“Component”菜单,点击“Install Component...”菜单项,然后在弹出的Into existing package属性页中Unit file name输人框中选择SPCOMM.pas文件,单击两次 “OK”按钮后,就可以将Spcomm控件安装到Delphi7.0的System组件页上。
Spcomm串口通信控件的基本属性、方法和事件说明如下: CommName属性:计算机串口端口号的名字,COM1、COM2……等,在打开串口前,必须填写好此值。 Spcomm串行通信控件具有多线程的特性,接收和发送数据分别在两个线程内完成,接收线程负责收到数据时触发OnReceiveData事件;用WriteCommData()函数将待发送的数据写入输出缓冲器,发送线程在后台完成数据发送工作。在接收和发送数据前需要初始化串口,用StartComm方法打开串口,退出程序时用StopComm方法关闭串口。
Spcomm应用的核心在于主线程、读线程和写线程之间的消息传递机制,而通信数据相关信息的传递也是以消息传递的方式进行的。在使用Spcomm进行串口通信编程,除按照说明使用外,还需要特别注意以下两个问题。 首先,Spcomm是通过ReadIntervalTimeout属性的设置,来确定所接收到的数据是否属子同一帧数据,其默认值是100ms,也就是说,只要任何两个字节到达的时间间隔小于1OOms,都被认为是属于同一帧数据,在与单片机协同工作时,要特别注意这个问题[2]。 使用串口SPCOMM接收数据的时候0x11和0x13无法接受,从时间间隔上看来可以接收,但是无法显示。网上查错误得: ------------------------------------------------------------------------ OutX_XonXOffFlow/InX_XonXoffFlow:这个属性是指进行发送/接收时的软件握手标志,两个握手信号之间的数据被认为是通讯数据,收到握手信号后,通讯就中止了。 FOutx_XonXoffFlow := True; XOffChar/XOnChar:这是指握手的字节,默认的初始中,有 FXonChar := chr($11); 至此,真相大白。0x11,0x13被占用为通讯握手信号,自然不会得到正确的处理。 问题找到了,解决也很容易。只需要在Comm的初始化中,自己定义 Comm.Inx_XonXoffFlow := False; 用Delphi 实现串口通信,常用的方法有:使用控件,如Mscomm和Spcomm控件等;使用API函数;在Delphi 中调用其它串口通信程序。 使用API方法的优点是比较适合于编写较为复杂的低层次通信程序,但缺点是编写串口通信程序较为复杂,需要掌握大量通信知识。 Spcomm是Small-Pig Team开发的一个第三方Delphi串口控件,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作,且编程简单、通用性强、可移植性好。在Delphi软件开发中已经成为一个被广泛应用的串口通信开发控件。
Spcomm共实现了三个类:串口类Tcomm、读线程类TreadThread以及写线程类TwziteThread[1]。Tcomm的某个实例在方法StartComm中打开串口,并实例化了一个读线程ReadThread和一个写线程WriteThread,它们和主线程之间进行消息的传递,实现串口通信。 在Delphi7.0中安装Spcomm串口通信控件的方法为:选择Delphi7.0的“Component”菜单,点击“Install Component...”菜单项,然后在弹出的Into existing package属性页中Unit file name输人框中选择SPCOMM.pas文件,单击两次 “OK”按钮后,就可以将Spcomm控件安装到Delphi7.0的System组件页上。
Spcomm串口通信控件的基本属性、方法和事件说明如下: CommName属性:计算机串口端口号的名字,COM1、COM2……等,在打开串口前,必须填写好此值。 Spcomm串行通信控件具有多线程的特性,接收和发送数据分别在两个线程内完成,接收线程负责收到数据时触发OnReceiveData事件;用WriteCommData()函数将待发送的数据写入输出缓冲器,发送线程在后台完成数据发送工作。在接收和发送数据前需要初始化串口,用StartComm方法打开串口,退出程序时用StopComm方法关闭串口。
Spcomm应用的核心在于主线程、读线程和写线程之间的消息传递机制,而通信数据相关信息的传递也是以消息传递的方式进行的。在使用Spcomm进行串口通信编程,除按照说明使用外,还需要特别注意以下两个问题。 首先,Spcomm是通过ReadIntervalTimeout属性的设置,来确定所接收到的数据是否属子同一帧数据,其默认值是100ms,也就是说,只要任何两个字节到达的时间间隔小于1OOms,都被认为是属于同一帧数据,在与单片机协同工作时,要特别注意这个问题[2]。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论