我正在开发一个项目,我正在使用我的串口。 当我打开我的串口后,我将不得不发送4个请求。因此发送请求我的代码是:
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
正在处理响应:
comport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
有没有办法管理我的程序。 请分享您的意见。
答案 0 :(得分:0)
如果您想要在系统响应上调用senddata1函数,则应使用事件来了解响应。 然后使用指定的输入(s1,s2,...)调用senddata1,该输入应该在每个响应上给予函数。
(如果我没有意识到你的要求,请告诉我。请在评论中说明)