ich bastle gerade mal wieder ein kleines Tool mit dem ich über Serialport Daten sende und empfange. die Geräte mit denen dieses Tool Kommunizieren soll arbeiten aber mit dem Zeichensatz
IA5 bzw. Appendix_A. dieser ist überwiegend kompatibel zu ASCII aber einige Zeichen unterscheiden sich.
mir geht es nun darum wie ich einen Beispielstring so konvertieren kann das er im richtigen Zeichensatz gesendet wird und wie ich empfangene Zeichen wieder richtig zurück wandeln kann das ich sie Normal lesen kann. Dabei muss ich beachten das die Steuerzeichen von 001 bis 031 umgewandelt werden müssen und z. b. als <LF> oder <ACK> dargestellt werden.
ich hab schon mal etwas rumprobiert um den empfang leesbar zu machen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| private string StringToHex(string hexstring) { var sb = new StringBuilder(); foreach (char t in hexstring)
if (Convert.ToInt32(t).ToString() == "1") { sb.Append("<SOH>"); } else if (Convert.ToInt32(t).ToString() == "2") { sb.Append("<STX>"); } else if (Convert.ToInt32(t).ToString() == "3") { sb.Append("<ETX>"); } else if (Convert.ToInt32(t).ToString() == "4") { sb.Append("<EOT>"); } else if (Convert.ToInt32(t).ToString() == "5") { sb.Append("<ENQ>"); } else if (Convert.ToInt32(t).ToString() == "6") { sb.Append("<ACK>"); } else if (Convert.ToInt32(t).ToString() == "8") { sb.Append("<BS>"); } else if (Convert.ToInt32(t).ToString() == "9") { sb.Append("<HT>"); } else if (Convert.ToInt32(t).ToString() == "10") { sb.Append("<LF>"); } else if (Convert.ToInt32(t).ToString() == "11") { sb.Append("<VT>"); } else if (Convert.ToInt32(t).ToString() == "12") { sb.Append("<FF>"); } else if (Convert.ToInt32(t).ToString() == "13") { sb.Append("<CR>"); } else if (Convert.ToInt32(t).ToString() == "16") { sb.Append("<DEL>"); } else if (Convert.ToInt32(t).ToString() == "21") { sb.Append("<NAK>"); } else if (Convert.ToInt32(t).ToString() == "22") { sb.Append("<SYN>"); } else if (Convert.ToInt32(t).ToString() == "23") { sb.Append("<ETB>"); } else if (Convert.ToInt32(t).ToString() == "28") { sb.Append("<FS>"); } else if (Convert.ToInt32(t).ToString() == "29") { sb.Append("<GS>"); } else if (Convert.ToInt32(t).ToString() == "30") { sb.Append("<RS>"); } else if (Convert.ToInt32(t).ToString() == "31") { sb.Append("<US>"); } else { sb.Append(t); }
return sb.ToString(); } |
aber was das senden an geht hab ich keine Idee.
hat sich mit so etwas schon wer befasst und kann mir weiter helfen?
Gruß,
avoid
sind wie ein wissenschaftliches Experiment. Sie