111,129
社区成员
发帖
与我相关
我的任务
分享
byte[] buf = new byte[128];
int byte_count = 0;
bool packet_started = false;
int goNext = 0;
byte data;
//bool goNext = false;
int i = Convert.ToInt32(obj);
while (true)
{
SerialPort serialport = listStationInfo[i].Rs232;
data = (byte)serialport.ReadByte();
#region MyRegion
switch (goNext)
{
case 0:
if (data == 00)
goNext = 1;
break;
case 1:
buf[byte_count++] = data;
goNext = 2;
break;
case 2: MessageBox.Show(buf[1].ToString() + " " + buf[2].ToString());
if (Convert.ToInt32(buf[1].ToString()) + Convert.ToInt32(buf[2].ToString()) == 255)
goNext = 3;
else
{
goNext = 0;
}break;
case 3: if (Convert.ToInt32(buf[1].ToString()) + Convert.ToInt32(buf[2].ToString()) == 255)
goNext = 4;
else
{
goNext = 0;
}break;
case 4: process_packet(buf, i);
goNext = 0;
break;
//default: break;
}
#endregion