本人最近剛學c++builder,用spcomm控制元件撰寫一個串口通信的界面。現在需要按下一個按鈕后對串口發送資料(十幾個位元組),然后對串口回傳的資料進行決議。按鈕點擊程式如下:
void __fastcall TForm1::In1_ReadClick(TObject *Sender)
{
Send="aa bb 03 FF 00";
Send_Hex(Send);
Sleep(300);
//if()
int a,b;
String V_Long="";
for(int i=4;i<8;i++)
{
a=IntToHex(Buf_Re[i],2).Length();
if(a>2)
V_Long=V_Long+IntToHex(Buf_Re[i],2).SubString(a-1,2);
else
V_Long = V_Long+IntToHex(Buf_Re[i],2);
}
。。。。。。。。。。。。。。。
}
其中Buf_Re是串口回傳的資料,用Comm1ReceiveData(TObject *Sender, Pointer Buffer, WORD BufferLength)來接收的。
如今串口通信正常,但是問題是點擊這個按鈕后C++builder會先把按鈕函式In1_ReadClick執行完之后才會執行Comm1ReceiveData,所以Buf_Re在第一次點擊按鈕時總是空值,之后第二次點擊之后In1_ReadClick得到的Buf_Re回傳資料才正常,如何做使得第一次點擊按鈕執行In1_ReadClick函式就能獲取實際的串口資料Buf_Re?
球大神幫忙啊~~
uj5u.com熱心網友回復:
In1_ReadClick只Send_Hex后面的代碼寫到
Comm1ReceiveData事件里
uj5u.com熱心網友回復:
To ksrsoft:恩,我自己也是這么弄的,謝謝你啦
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90206.html
標籤:基礎類
下一篇:求各位大神幫幫忙
