PComm Lite ---- 用VC 封装串口通信协议 DLL

串口 专栏收录该内容
32 篇文章 0 订阅

用了Pcomm lite,只需要打开串口,建个线程收数据,然后只需要关注自己要收发的数据就行了。

PComm Lite是家叫moxa的公司出的,做了几十年工业串口卡、串口服务器之类设备了。提供的pcomm易用性、可靠性久经考验。

下载地址:http://www.moxa.com/product/download_pcommlite_info.htm
成熟的PCOMM PRO确实好用,例子和使用方法都比较简单
成熟串口DLL产品, PCOMM, 如果你还要封装自已的协议, 再写一个DLL中间件 调用串口DLL 就行了, 省去了 串口封装这一大难题。

注意可以会搜到另外一个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_write()
接收数据的:sio_getch(),sio_read()
查询输入输出缓冲区状态的:sio_iqueue(), sio_oqueue()
有时可能要设读写超时:sio_SetReadTimeouts(), sio_SetWriteTimeouts()
这些函数见名知义,用法查一下PComm.chm就行了。
接收数据一般免不了要开线程的,在接收线程里sio_iqueue()看一下有没有数据,有就处理,没就Sleep()一会。接收数据时它至少会帮你缓冲几十k,一般也不会丢数据。也可以用sio_term_irq()指定接收一定长数据数据就调用一个CALLBACK函数。
这些基本就齐活了。需要控制DTS/RTS、自动流控件有都有,甚至还有Xmoderm/Ymoderm/Zmoderm发送文件。如果要Modbus之类的协议就要自己写了。

https://www.moxa.com/product/download_pcommlite_info.htm

Features and Benefits

Easy-to-use APIs (more than 50 functions)
Supports ZModem, YModem, XModem, Kermit, and ASCII file transfer protocols
Supports VB, C/C++, Delphi interfaces—sample programs provided
Supports serial comm speeds up to 921.6 Kbps
Supports Multi-Session Terminal Emulators (VT100, ANSI)
Compatible with standard COM ports that support Win32 COMM API
Free lifetime upgrades
Royalty Free

Introduction

MOXA PComm Lite provides software developers with an alternative to using Microsoft’s more complex Win32 COMM API. In fact, PComm Lite can be used with several different brands of multiport serial board, including Digi, Equinox, and Moxa. MOXA PComm Pro can help you:

• Speed up the development of serial comm applications
• Troubleshoot serial comm problems between two connected devices
• Analyze serial comm performance

MOXA PComm Lite includes easy-to-use API functions that are specially designed for async communication applications. Use one of more than 50 easy-to-use API functions with VB, C/C++, and Delphi interfaces for serial comm applications. PComm Lite also supports built-in functions for file transfer protocols such as ZModem, YModem, XModem, Kermit, and ASCII, making the programming of file uploading-and-downloading easier than ever before.

这里写图片描述

这里写图片描述

下载下来如下文件:
setup_pcommlite_1.6_12041917.zip

解压之后 得到 :setup_pcommlite_1.6_12041917.exe
这里写图片描述

这里写图片描述

C:\Program Files\Moxa\PCommLite 1.6
这里写图片描述

这里写图片描述

资料下载地址 :
https://download.csdn.net/download/wowocpp/10515930

After installation, under PComm directory, there will be sub-directories:

Lib, Example\C, Example\Vb and Example\Delphi to contain library, DLL library and sample programs, respectively. And the files contained in those sub-directories are:

Lib\PComm.hlp                The online help file.

Lib\PComm.cnt                The online help file.

Lib\PComm.dll                 The dynamic link library.

Lib\PComm.lib                 The import library. Link the application with this import library to resolve the calls to the dynamic link library PComm.dll.

Lib\PCommb.lib               The import library (for Borland C/C++). 

Lib\PComm.h                  The C header file for PComm.

Lib\PComm.pas               The Delphi unit for PComm.

Lib\PComm.bas               The VB module for PComm.

Example\C\*.*                  The C sample program.

Example\Vb\*.*                The Visual Basic sample program.

Example\Delphi\*.*           The Delphi Sample Program.


The file Pcomm.dll will also be put under %Windows%System\PComm.dll for Windows 95/98. For Windows NT/2000/XP/2003/Vista, PComm.dll will also be put under %Windows%System32\PComm.dll. The file will be used for Visual C++, Visual Basic and Borland Delphi application programs.

  • 0
    点赞
  • 1
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

PComm 库函数 PComm 库函数是台湾MOXA公司提供的,他为户提供了基于win32 api的开发接口。 PComm库函数分为7大类 控制函数、数据输入函数、数据输出函数、状态函数、事件驱动函数、传输文件函数、特殊设定函数 上述函数均返回int型数据,若函数调成功则返回0,否则返回一个负整数。 控制函数主要包括 sio_open(PortNum) 打开串口 sio_close(PortNum) 关闭串口 sio_ioctl(PortNum, baud, mode)设置串口的工作模式,包括 波特率,数据位元,停止位,效验等 sio_flush(portNum,func)清除发送、接收缓冲区 其中func 为0清空输入 ,为1清空输出,为2清空输入输出 sio_SetWriteTimeouts(int port,DWORD TotalTimeouts):设置串口写操作的超时。 sio_lctrl(Portnum,mode) 设置串口RTS/DTS。 待定 数据输入函数主要包括 sio_getch(PortNum) 从输入缓冲区读一个字符 sio_read(PortNum,buf,len) 从输入缓冲区读指定个数的字符 sio_iqueue(Portnum)读取输入缓冲区中的字符长度 数据输出函数主要包括 sio_putch(PortNum) 写一个字符到输出缓冲区 sio_write(PortNum,buf,len)写指定个数的字符到输出缓冲区 状态函数主要包括 sio_lstatus(portNum)获取串口的CTS,DSR,DCD,RI线的状态 sio_getbaud(portNum)获取串口的波特率 sio_getmode(portNum)获取串口的工作模式。对应sio_ioct函数 事件函数主要包括 sio_term_irq(portNum,func,code) 当接收到指定字符时响应事件,func为回调函数名,code为指定的字符 sio_cnt_irq(PortNum,func,count) 当接收到指定个数字元时响应事件,func为回调函数名,count接收的个数 传输文件函数主要包括 sio_FtASCIITx(portNum,fname,func,key)发送一个文本文件 sio_FtASCIIRx(portNum,fname,func,Key,sec)接收一个文本文件 int i,Ret,DataLen; FILE *fp1; uchar RetDataC[30],WriteData[24],PSC[5]; Ret = sio_open(port); if (Ret != SIO_OK ) return(-1);//打开串口错误 Ret = sio_ioctl (port, B9600, P_NONE | BIT_8 | STOP_1 ); if (Ret != SIO_OK) { sio_close(port); return(-2);//设置串口参数失败 } /*Ret = sio_lctrl (port, C_DTR | C_RTS ); if (Ret != SIO_OK) { sio_close(port); return(-2);//设置串口参数失败 }*/ /*Ret = sio_flush(port,2); if (Ret != SIO_OK){ sio_close(port); return(-3);//清空 输入和输出缓冲区的数据 }*/
评论 1 您还未登录,请先 登录 后发表或查看评论
/*====================================================================================================== 作 者: 许明龙 单 位: 兰州交通大学软件工程专业09级 联 系: 世上没永远的陌生人,只有还未认识的朋友! QQ:494462498. Tel:13893256491 Email:xuhongming251@163.com 修改时间: 2011-6-5 =======================================================================================================*/ /*======================================================================================================== 如何使? 1.引入DLL文件,引入头本文件,就已声明了导入函数 //要引入DLL的方法 //1、把SERIALPORTDLL1.dll和SERIALPORTDLL1.lib拷贝到工程目录下 //2、然后在 工程->设置->连接->分类->常规->对象/库模块输入:SERIALPORTDLL1.lib 2.调Init初始化串口 3.调SetReceiveFuntion(&ReveveChar);指定接收和处理数据的函数 4.实现void ReveveChar(WPARAM data, LPARAM port)这个函数 5.调SendData发送数据 6.ClosePort(); ========================================================================================================*/ /*======================================================================================================= 函 数 名: Init 功 能: 打开并初始化串口 参数说明: UINT port //端口号 UINT baud //波特率 char parity = 'N' //校验位,默认为无校验位 UINT databits = 8 //数据位,一个字节的位数,默认为8位 UINT stopbit = 1 //停止位,默认为1位 使例子: Init(2,9600); //打开串口2,波特率9600,其它值为默认值(无奇偶校验、数据位为8、停止位为1) Init(4,4800,'N',10);//打开串口4,波特率为4800,无奇偶校验,数据位为10,(停止位默认为1) ... ... ======================================================================================================*/ extern "C" __declspec(dllimport) void Init( UINT port, //端口号 UINT baud, //波特率 char parity = 'N', //校验位 UINT databits=8 , //数据位 UINT stopbit=1 //停止位 ); /*========================================================================================================== 函 数 名: SendData 功 能: 向串口发送数据,使之前必须先调Init函数初始化串口 参数说明: char data[] //要发送的数据 int datalen //发送数据的长度 使例子: 例1: char a[] = {0x01,0x03,0x00,0
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

wowocpp

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值