public void SendPacket() { int checksum = 0; if (PacketNum++ > 999) { PacketNum = 0; } //get all the data in string form String num = PacketNum.ToString("D3"); String A0val = A0.ReadRaw().ToString("D4"); String A1val = A1.ReadRaw().ToString("D4"); String A2val = A2.ReadRaw().ToString("D4"); String A3val = A3.ReadRaw().ToString("D4"); String A4val = A4.ReadRaw().ToString("D4"); String A5val = A5.ReadRaw().ToString("D4"); char D0val = D0.Read() ? '1' : '0'; char D1val = D1.Read() ? '1' : '0'; char D2val = D2.Read() ? '1' : '0'; char D3val = D3.Read() ? '1' : '0'; char D4val = D4.Read() ? '1' : '0'; char D5val = D5.Read() ? '1' : '0'; char D6val = D6.Read() ? '1' : '0'; char D7val = D7.Read() ? '1' : '0'; char Btnval = Btn.Read() ? '1' : '0'; //concat the data String packet = num + A0val + A1val + A2val + A3val + A4val + A5val + Btnval + D0val + D1val + D2val + D3val + D4val + D5val + D6val + D7val; //compute checksum foreach (char digit in packet) { checksum += (digit); } checksum %= 1000; //append checksum and protocol frame stuff packet = "###" + packet + checksum + "\r\n"; //convert to byte array for sending byte[] bytepacket = System.Text.Encoding.UTF8.GetBytes(packet); //send the packet _serial.Write(bytepacket, 0, bytepacket.Length); }