anxiangbo 发表于 2009-5-20 08:11:30

C++Builder 6 中如何安装ComPort3.1控件?大哥帮帮忙!

C++Builder 6 中如何安装ComPort3.1控件?大哥帮帮忙!

anxiangbo 发表于 2009-5-20 14:24:59

顶上,没人知道吗?

anxiangbo 发表于 2009-5-20 15:51:28

继续顶上

zz99 发表于 2009-7-22 15:21:17

我只装上了2.64版 3.1版死活装不上,不知为什么

flywater 发表于 2009-7-22 15:52:37

我觉得用组件做串口程序并不太好,占资源,而且操作多个串口时很容易出问题,串口组件是用API做的,所以建议直接用API,配合多线程操作,挺方便的,而且相当稳定,

zz99 发表于 2009-7-22 17:28:57

flywater 能不能给个简单的API的串口操作例子?

flywater 发表于 2009-7-22 18:39:56

基本步骤是这样的:
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次,呵呵

zz99 发表于 2009-7-22 21:36:32

谢谢 flywater 落叶 ,我也用API做了一个,但数据接收部分,一直没有调试通过,明天用你的试试看

champlou 发表于 2009-7-26 08:50:12

楼主有没有 C++Builder的安装软件啊?我是一个C++builder的初学者,想做一个上位机,但是在网上找了很长时间也没找到这个编程软件。

goodname 发表于 2009-7-27 20:23:57

网上一搜就是一大把,用迅雷试试!
页: [1]
查看完整版本: C++Builder 6 中如何安装ComPort3.1控件?大哥帮帮忙!