我正在使用串行端口工作。 當我打開我的串口後,我將不得不發送4個請求。 SO用於發送請求我的代碼是:在特定時間後執行計時器中的確切功能
private string ByteArrayToHexString(byte[] data)
{
StringBuilder sb = new StringBuilder(data.Length * 3);
foreach (byte b in data)
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));
return sb.ToString().ToUpper();
}
private void senddata1(String str)
{
// Convert the user's string of hex digits (ex: B4 CA E2) to a byte array
byte[] data = HexStringToByteArray(str);
// Send the binary data out the port
comport.Write(data, 0, data.Length);
}
此函數將創建一個發送數據的方法。 在計時器滴答事件我要送這樣的數據:
private void timer1_Tick(object sender, EventArgs e)
{
//here I'm sending my data in a timer
senddata1(s1);
senddata1(s2);
senddata1(s3);
senddata1(s4);
}
注:後每senddata1()函數,系統會得到迴應。
所以問題是當我發送數據我沒有得到響應,因爲系統無法讀取所有senddata。 我想以某種方式管理我的程序,以便每250秒後發送一次數據。 像這樣:
SendData1(s1);
get response from the system
senddata1(s2);
get response from the system
GET響應正在處理中是這樣的:
comport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
那麼,有沒有辦法,我可以管理我的程序。 請分享你的意見。
顯然不這樣做真的* *喜歡,因爲你要阻止你的代碼,直到響應DataReceived事件檢索收到。所以不要使用它,直接調用Read()。不要忘記循環,直到你得到整個迴應。 –
@HansPassant,謝謝,可以幫助我,因爲我是串口編程的新手,你能告訴我一個簡短的例子嗎? –