public void onGetPicture(int index,PictureData pd) { if (opdh != null) { opdh(index,pd); } }
public void showPicture(int index,PictureData pd) { this.Invoke(new Action(delegate { MemoryStream ms = new MemoryStream(pd.data); Image image = Image.FromStream(ms); if (index == 0) this.pictureBox1.Image = image; else if (index == 1) this.pictureBox2.Image = image; })); }
public void getPictureDate(int index,PictureData pd) { this.Invoke(new Action(delegate { MemoryStream ms = new MemoryStream(pd.data); Image image = Image.FromStream(ms); this.pictureBox1.Image = image; recvCount++; this.label8.Text = recvCount + ""; })); }
public void DataHandle(byte data) { switch (satus) { case parseType.wait0xaa: if (data == 0xaa) { satus = parseType.wait0x55; pd = new PictureData(); } break; case parseType.wait0x55: if (data == 0x55) { satus = parseType.waitdatalen; } break; case parseType.waitdatalen: pd.dataLength += (data << (pd.dataLengthstep * 8)); pd.dataLengthstep--; if (pd.dataLengthstep < 0) { pd.data = new byte[pd.dataLength]; satus = parseType.waitdata; } break; case parseType.waitdata: pd.data[pd.dataIndex++] = data; if (pd.dataIndex == pd.dataLength) { satus = parseType.waittail; } break; case parseType.waittail: if (data == 0xa5) { satus = parseType.dataready; } break; default: break; } if (satus == parseType.dataready) { //接受到完整数据包 satus = parseType.wait0xaa; } }
void RecvThread() { UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Any, 8866)); IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 0); parseType satus = parseType.wait0xaa; PictureData pd = null; while (runFlag) { byte[] buf = client.Receive(ref endpoint); //string msg = Encoding.Default.GetString(buf); //int i=0; //refresh(msg+endpoint.Address); for (int i = 0; i < buf.Length; i++) { byte data = buf[i]; switch (satus) { case parseType.wait0xaa: if (data == 0xaa) { satus = parseType.wait0x55; pd = new PictureData(); } else { satus = parseType.wait0xaa; } break; case parseType.wait0x55: if (data == 0x55) { satus = parseType.waitCmd; } else { satus = parseType.wait0xaa; } break; case parseType.waitCmd: pd.cmd = data; satus = parseType.waitdatalen; break; case parseType.waitdatalen: pd.dataLength += (data << (pd.dataLengthstep * 8)); pd.dataLengthstep--; if (pd.dataLengthstep < 0) { pd.data = new byte[pd.dataLength]; satus = parseType.waitdata; } break; case parseType.waitdata: pd.data[pd.dataIndex++] = data; if (pd.dataIndex == pd.dataLength) { satus = parseType.waittail; } break; case parseType.waittail: if (data == 0xa5) { satus = parseType.dataready; } else { satus = parseType.wait0xaa; } break; default: satus = parseType.wait0xaa; break; } if (satus == parseType.dataready) { satus = parseType.wait0xaa; parseName(pd.data, endpoint.Address.ToString()); } } } }
void recvThread() { byte[] recvBuffer = new byte[1024]; parseType satus = parseType.wait0xaa; PictureData pd = null; //这里通知上一层有新的连接 if (socket.Connected) { while (true) { int receiveCount = socket.Receive(recvBuffer); for (int i = 0; i < receiveCount; i++) { byte data = recvBuffer[i]; switch (satus) { case parseType.wait0xaa: if (data == 0xaa) { satus = parseType.wait0x55; pd = new PictureData(); } else { satus = parseType.wait0xaa; } break; case parseType.wait0x55: if (data == 0x55) { satus = parseType.waitCmd; } else { satus = parseType.wait0xaa; } break; case parseType.waitCmd: pd.cmd = data; satus = parseType.waitdatalen; break; case parseType.waitdatalen: pd.dataLength += (data << (pd.dataLengthstep * 8)); pd.dataLengthstep--; if (pd.dataLengthstep < 0) { pd.data = new byte[pd.dataLength]; satus = parseType.waitdata; } break; case parseType.waitdata: pd.data[pd.dataIndex++] = data; if (pd.dataIndex == pd.dataLength) { satus = parseType.waittail; } break; case parseType.waittail: if (data == 0xa5) { satus = parseType.dataready; } else { satus = parseType.wait0xaa; } break; default: satus = parseType.wait0xaa; break; } if (satus == parseType.dataready) { satus = parseType.wait0xaa; if (opdh != null) opdh(id, pd); } } } } }
public void receiveData() { byte[] receiveBuffer = new byte[4096]; parseType satus = parseType.wait0xaa; PictureData pd = null; while (flag) { if (remote != null) { int recevCount = newSocket.ReceiveFrom(receiveBuffer, ref remote); for (int i = 0; i < recevCount; i++) { byte data = receiveBuffer[i]; switch (satus) { case parseType.wait0xaa: if (data == 0xaa) { satus = parseType.wait0x55; pd = new PictureData(); } else { satus = parseType.wait0xaa; } break; case parseType.wait0x55: if (data == 0x55) { satus = parseType.waitCmd; } else { satus = parseType.wait0xaa; } break; case parseType.waitCmd: pd.cmd = data; satus = parseType.waitdatalen; break; case parseType.waitdatalen: pd.dataLength += (data << (pd.dataLengthstep * 8)); pd.dataLengthstep--; if (pd.dataLengthstep < 0) { pd.data = new byte[pd.dataLength]; satus = parseType.waitdata; } break; case parseType.waitdata: pd.data[pd.dataIndex++] = data; if (pd.dataIndex == pd.dataLength) { satus = parseType.waittail; } break; case parseType.waittail: if (data == 0xa5) { satus = parseType.dataready; } else { satus = parseType.wait0xaa; } break; default: satus = parseType.wait0xaa; break; } if (satus == parseType.dataready) { satus = parseType.wait0xaa; if (opdh != null) opdh(id, pd); } } } } }