Pcomm串口库
PComm概述
PCOMM是MOXA公司开发的一个用于RS232/485/422串口通信的DLL。
Pcomm lite 串口库介绍
关于串口编程的,有用API的,有用mscomm的。其实用了Pcomm lite,很多问题都不会碰到,只需要打开串口,建个线程收数据,然后只需要关注自己要收发的数据就行了。
国产的免费串口控件象Victor,SPCOMM之类可用。还有codeproject.com 里面的CSerialPort类,Delphi的Tcomm等
与其它串口开发方式比较:简单地说API是基础零件,自己做起来麻烦。MSComm控件、CSerialPort类是实验室产品,Pcomm lite是工业成熟产品。
PComm Lite是家叫moxa魔莎的公司出的,moxa是专靠串口吃饭的公司,业内有很大的影响力量,专做工业串口卡、串口服务器之类设备的,软件也不赖。
提供的pcomm易用性、可靠性久经考验。下载地址:http://www.moxa.com/product/download_pcommlite_info.htm
目前最新版是Version 1.6. Released May 14, 2012,支持Windows 2000, XP, 2003, Vista, 2008, 7 (x86 and x64),开发环境支持VC/VB/Delphi。
注意可以会搜到另外一个Version 2.6. Released Jul 8, 2008是WIN9x/NT4用的,不要看版本号高下错了。国外工业上还有很多老系统在用。
用起来很简单,pcomm.h/pcomm.lib两个文件复制到项目目录并引用,pcomm.dll丢到windows\system32下。
整个库包含50多个函数,最常用的也就10来个:
打开、关闭、设波特率的:sio_open ()、sio_close()、sio_baut()
发送数据的:sio_putch(), sio_getch()
接收数据的:sio_read(),sio_write()
查询输入输出缓冲区状态的:sio_iqueue(), sio_oqueue()
有时可能要设读写超时:sio_SetReadTimeouts(), sio_SetWriteTimeouts()
这些函数见名知义,用法查一下PComm.chm就行了。
接收数据一般免不了要开线程的,在接收线程里sio_iqueue()看一下有没有数据,有就处理,没就Sleep()一会。接收数据时它至少会帮你缓冲几十k,一般也不会丢数据。也可以用sio_term_irq()指定接收一定长数据数据就调用一个CALLBACK函数。
这些基本就齐活了。需要控制DTS/RTS、自动流控件有都有,甚至还有Xmoderm/Ymoderm/Zmoderm发送文件。如果要Modbus之类的协议就要自己写了。
------解决方案--------------------
挺有用,谢谢
------解决方案--------------------
十多前用过,当时好象是一台计算机就处理10个或16个串口的数据(具体忘了是多少个串口,至少是10个串口),一点问题都没问题.现在早就忘了它的库了.这个库编程也简单,好象当时能响应数据中断,我是在类似中断函数里处理数据的.
------解决方案--------------------
Pcomm缺点
PCOMM PRO的中断接收太龌龊,有时收到3个,有时5个,只好采用中断收结束字节,并且将下位机发送方要发的字节全部拆成只有低字节的数据,非常不好用
PComm引起的内存占用过多
2013年04月28日 ? 综合 ? 共 277字 ? 字号 小 中 大 ? 评论关闭
在一次使用PComm中,发现CPU占用超过50%,当没有接收数据时,%1~2%左右,而接收数据时在40%~60%之间,但数据量很少呀,难道是我的接收线程的问题,我是用一个线程一直读数据,如果读取的长度小于1,重新读,一般来讲,这肯定会引起CPU一直忙不停的读,但以前并没有出现这样的情况呀,也是这样写的,忽然想起了串口有个读超时的设置,难道是读超时为0,所以CPU一直在读,结果加了超时设置后:sio_SetReadTimeouts(1,2000,40),就正常了,说明我的判断是正确的。初学的朋友一定要记得如果是使用PComm通信的话,一定要设置超时。
3169字左右开始出错
最多打3944左右字
1,为什么用rts
2,硬流控线的接法教程?
2,能不能用软流控
tx Xon/xoff 和 rx xon/xoff区别
3,能不能4个全部启用?
4,用最新版的Pcomm试一下
5,用Pcomm的Demo测试一下
串口通信,基于PCOMM控件,可将串口2、3脚相连测试。