C++Builder 6 中如何安装ComPort3.1控件?大哥帮帮忙!
C++Builder 6 中如何安装ComPort3.1控件?大哥帮帮忙! 顶上,没人知道吗? 继续顶上 我只装上了2.64版 3.1版死活装不上,不知为什么 我觉得用组件做串口程序并不太好,占资源,而且操作多个串口时很容易出问题,串口组件是用API做的,所以建议直接用API,配合多线程操作,挺方便的,而且相当稳定, flywater 能不能给个简单的API的串口操作例子? 基本步骤是这样的:1、先打开串口:
DCB dcb; //串口设置信息;
HANDLE hComPump;
hComPump=CreateFile(nCommNo,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
hComPump-串口句柄。
nCommNo-串口号。
初搞的话其它参数可以不理。
2、设置串口:
dcb.BaudRate=9600; //设波特率;
dcb.ByteSize=8; //设字节为8位;
dcb.StopBits=1; //停止位;
dcb.Parity=EVENPARITY; //奇偶校验;
SetCommState(hComPump,&dcb); //将参数设置到串口;
通过以上操作就按你的要求打开串口了,下面就是串口数据的发送和接收问题。
1、数据发送(定义缓冲区就不详说了)
sprintf(sSendBuffer,"%c%c%c%c%c%c",0xFe,0xfd,0xf5);//将缓冲区内数据填为:fe fd f5
WriteFile(hComPump,sSendBuffer,nSendLength,&nTemp,NULL); //把数据发送到串口
参数:
hComPump-你打开串口时的串口句柄
sSendBuffer-要发送的数据缓冲区
nSendLength-要发送的数据个数;
nTemp-成功发送的个数;
Sleep(400);//要做点廷时,具体长度可根据下位机反应时间定。
2、数据接收
COMSTAT cs;
DWORD nBytesRead,dwError;
ClearCommError(hComPump,&dwError,&cs);//先取出cs串口状态结构数据,确定串口缓冲区内已有多少个数据;
ReadFile(hComPump,sBuffer,cs.cbInQue,&nBytesRead,NULL);//读取所有串口缓冲区内的数据到sBuffer中;
3、程序退出时关闭串口
CloseHandle(hComPump);
到此,一个简单的串口发送和接收流程已完成,当然,这只是基本流程性的东西,要想做出稳定可靠的串口程序,还要有太东西要自己完善。我一般在线程内进行串口操作,显示和数据库用另外线程。数据发送完成后可以不等待直接一直判断cs.cbInQue,一个字节一个字节接收,这样效率和通信速度能提高很多
不好意思,打字慢,还错字连篇,改了N次,呵呵 谢谢 flywater 落叶 ,我也用API做了一个,但数据接收部分,一直没有调试通过,明天用你的试试看 楼主有没有 C++Builder的安装软件啊?我是一个C++builder的初学者,想做一个上位机,但是在网上找了很长时间也没找到这个编程软件。 网上一搜就是一大把,用迅雷试试!
页:
[1]