串口(COM)通信编程
c_huabo
这个作者很懒,什么都没留下…
展开
-
关于多个按钮代码重用方法
关于多个按钮代码重用方法,窗体上有24个按钮,每个按钮执行的事件一样,但要根据各自的属性下发不同的标识到串口中,则有两种方法可以 使它们共用一个事件过程,一种是直接用Sender是否等于某个控件来判断是哪个按钮进行了操作,第二种是用遍历组件的方法,来取得某一种 控件的属性数据,这样省了大量的代码。 procedure TForm1.ToolButton1Click(Send原创 2010-03-12 11:31:00 · 880 阅读 · 0 评论 -
SPComm接收数据的两种方法
在使用SPComm接收数据时,要用到指针,函数原型为:procedure TForm1.commReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);beginend;其收到数据时,它提供了一个指针Buffer,指向这个存放数据的缓冲区的首地址,长度为BufferLength,这样就知道收到的是什么东东了,可以有两种方法取出其中内容:var pc:PChar;begin pc:=PChar(Buffer); Memo1.L原创 2010-06-01 10:03:00 · 6548 阅读 · 0 评论 -
虚拟串口调试技巧
虚拟串口调试技巧原创 2010-09-06 13:29:00 · 2297 阅读 · 0 评论 -
DL/T-2007数据帧为什么上行码为00
电力载波通信数据帧的每一个结构码应该都有它的特殊功能,就象从站上报数据给主站,上行码为00,其实这里00是兼容了RS485帧和载波帧两种格式,载波数据帧是以前导码FE FE FE FE开头,然后是7E AA,然后是后面的数据长度、上/下行标识码(80/00)、帧起始符68、地址(6个字节,12位)、帧起始符68、控制码(一个字节)、数据标识(4个字节)、有效数据长度(一个字节)、有效数据、帧内校验CS(一个字节)、帧结束符16、帧校验码CRC(两个字节),而RS485数据帧是把载波帧的前面的标识7E AA和原创 2010-09-17 11:12:00 · 1169 阅读 · 1 评论 -
Delphi内存指针操作说明--怎样把字符串的内容拷贝到比特数组中?
<br />当从串口收到数据01 30 30 30 30 30 30 30 30 30 30 01, Str内容为#1'0000000000'#1,怎样把Str字符串的内容拷贝到比特数组rbuf中?<br /><br /><br /><br /><br />Len:=ComPort.ReadStr(Str, Count);<br /><br /> p:=Integer(Str); //@str:=$12fD70 //@$12fD70:=$D693D8<br /><br /> Memo.Lines.Add原创 2010-12-21 15:55:00 · 2517 阅读 · 0 评论 -
NEC单片机调试
今天用了一下NEC的单片机调试,这么强大,就像写上位机程序一样,可以看到程序内的变量、寄存器的值,真的好爽,以前用51时就靠猜,不知道程序跑到个什么状态,纪念一下,开始我的单片机之路吧!原创 2011-06-07 16:53:00 · 781 阅读 · 0 评论 -
PComm引起的内存占用过多
<br />在一次使用PComm中,发现CPU占用超过50%,当没有接收数据时,%1~2%左右,而接收数据时在40%~60%之间,但数据量很少呀,难道是我的接收线程的问题,我是用一个线程一直读数据,如果读取的长度小于1,重新读,一般来讲,这肯定会引起CPU一直忙不停的读,但以前并没有出现这样的情况呀,也是这样写的,忽然想起了串口有个读超时的设置,难道是读超时为0,所以CPU一直在读,结果加了超时设置后:sio_SetReadTimeouts(1,2000,40),就正常了,说明我的判断是正确的。初学的朋友一原创 2011-05-03 23:48:00 · 1121 阅读 · 0 评论 -
解决“串口接收数据时被截断”的问题
解决“串口接收数据时被截断”的问题今天是忙里愉闲的写了这篇文章,我写的一个串口测试程序,用的是PComm.dll进行通信的,但在有的电脑上运行时,接收数据只要有点长度,比如30个字节,数据就会被截断,并不是所有电脑都会出现这样的问题,害得同事说是不是用的控件有问题,其实,这知道,PComm.dll这样的组件,技术已经相当的成熟了,做这个控件,人家可是大厂,就靠这吃饭的,再说了,几十年的原创 2012-04-18 13:44:08 · 11870 阅读 · 4 评论