【C#】串口通信方面。
如题,一个界面有许多按钮,通过点击按钮向单片机发送命令,然后得到单片机返回命令。
比如我发送的是加电开关,返回电压、电流等。然后通过解析将数据显示在同页面的其他textBox(不要不断刷新,大概一两秒一次)。
问题来了,接受的数据是一个BYTE的形式来的,我需要的命令是FD开头,AA结尾,13位的一段Byte。
怎么能让单片机传送过来的数据按照这个形式保存进来,因为单片机发送的命令是断断续续的,这次没传完,下次接着传,我判断第一位是FD,然后拼接后12的方法也不行,同时只能显示两个TextBox,多了的话就数据就卡住不动。这个原因是什么,是没解析对数据还是什么。。
求人啊
------解决方案--------------------每次数据到达后,加上之前接收的包进行数据的完整性判断,再做处理。
至于你的卡是因为没有合理的利用线程和异步。
------解决方案-------------------- BitArray bit = new BitArray(16);//0-15
string ac = Units.ConvertString(MIO.ToString(), 10, 2);
for (int i = 0; i < ac.Length; i++)
{
bit[15 - i] = ac.Substring(ac.Length - 1 - i, 1) == "1" ? true : false;
}
chbADk.Checked = bit[15];//
chbAF.Checked = bit[14];//
希望对你有帮助
------解决方案--------------------为什么要延时500ms?
如果要延时,应该在数据处理结束了,再延时
string ret = string.Empty;
data = null;
try
{
bool bGet = false;
string received =string.Empty;
int nTimeout = 0;
do
{
received += m_Serial.ReadExisting();
if (received.IndexOf("\x03") >= 0)//这个地方要换成你的结束符
{
bGet = true;
//你的数据处理......
}
&nbs