BCB 串口控件的使用 TComm
昨天工作用到了串口通信,MMP的,昨天懵逼了一下午,今天終于整通了,身為菜鳥,大師們是不懂這些心痛的。
進入主題:使用BCB提供的控件TComm編程方便且簡單,TComm位于System分類里面。?? / /備注(網友說這種方式可以用,當要求高的時候還是不夠用的。)
1、窗口拖入一個TComm控件
2、屬性框參數設置。
/ /備注(常需設置的參數:CommName串口名 、BaudRate波特率、ByteSize、Parity校驗、ReadIntervalTimeout讀串口時兩字符時間間隔)
3、接收數據并處理
BCB提供了 OnReceiveData()自動接收來自串口的數據
//備注(typedef void* Pointer;//標準定義的void __fastcall cm1ReceiveData(TObject *Sender, Pointer Buffer, // Buffer存放著讀取的數據WORD BufferLength); //Bufferlength 存放著 讀取的數據的長度
4、發送數據
用串口對象調用寫數據函數
function?TComm.WriteCommData(?pDataToWrite:?PChar;?dwSizeofDataToWrite:?Word?):?Boolean; // 參數一:發送的數據;參數二:發送的數據的長度5、具體使用串口
TComm * cm1; //1、打開串口try{cm1->StartComm(); //函數會讓程序掛掉,不知道為什么 try catch可規避,不影響使用 CM1PortOpenSucccessFlag=true;}catch(...){m_step = -1;//Application->MessageBoxA("OK","串口打開失敗",MB_OK|MB_SYSTEMMODAL);}
//2、發送的數據
? char * cmd;
? cmd="MCH\r\n"; //注意:命令MCH末尾要跟著\r\n不然串口不回數據,至于為什么,各位開腦洞吧
? bool rtn = cm1->WriteCommData(cmd,strlen(cmd)); //注意:第二個參數如果按照函數定義那樣用sizeof函數是有問題的,sizeof求的是所占空間,而不是字符個數
//3、睡眠等待Sleep(500);
發送數據后,接著要使用cm1ReceiveData串口返回的數據,需要等待一些時間。如果不等待,一直不等的 writeCommData將會出錯。
//4、接收函數(自動接收)
void __fastcall TparaForm::cm1ReceiveData(TObject *Sender, Pointer Buffer,
????? WORD BufferLength)
{
? char recvData[100];
? unsigned char revBuffer[100];
? memset(recvData, 0, 100);
? //AnsiString str;
? for(int i=0; i<BufferLength; i++, ((BYTE *)Buffer)++)
? {
??? revBuffer[i] = *(BYTE *)Buffer ;
??? recvData[i] = revBuffer[i];
? }
//得到char* 的recvData接收數據之后,根據需要使用,下面是個例子
??? m_readData=recvData; //成員變量
??? m_readDataLength=BufferLength;
}
//5、使用完,關閉串口
cm1->StopComm();
?
?
?
工作小助攻:AccessPort串口監視軟件 易學易用
參考鏈接:http://www.myexception.cn/h/530898.html(串口各項參數解釋)
?? https://bbs.csdn.net/topics/310121049(串口監視工具)
? ?https://blog.csdn.net/Tercel99/article/details/46690921(這個詳細)
? ? http://ascii.911cha.com/(Ascii值對照表)
? ? http://www.cnblogs.com/azbane/p/8710064.html(AnsiString與各種數據類型間的相互轉換)
?
棒棒噠~~么么噠
?
轉載于:https://www.cnblogs.com/azbane/p/8710362.html
總結
以上是生活随笔為你收集整理的BCB 串口控件的使用 TComm的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决 Let’s Encrypt SSL
- 下一篇: 刷OJ时输入输出与字符串