Normalerweise haben wir vier Methoden, um serielle Kommunikation in C# zu implementieren:
Erstens: Dies ist die einfachste und bequemste Methode über das MSCOMM-Steuerelement. Es ist jedoch schwierig, die Funktion frei zu steuern. Gleichzeitig ist diese Steuerung nicht im System selbst enthalten und muss daher registriert werden, was den Rahmen dieses Artikels sprengt. Sie können http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=320 besuchen, ein Tutorial, das von einem ausländischen Internetnutzer geschrieben wurde. Ich habe ihm einmal eine E-Mail geschickt und er hat schnell geantwortet.
Zweitens: Microsoft hat eine neue serielle Portsteuerung in .NET eingeführt, die auf der P/Invoke-Aufrufmethode von .NET basiert. Weitere Informationen finden Sie auf der Microsoft-Website http://msdn.microsoft. Weitere Informationen finden Sie unter com/msdnmag/issues/02/10/NETSerialComm/default.aspx.
Drittens: Verwenden Sie einfach Steuerelemente von Drittanbietern, aber im Allgemeinen müssen Sie bezahlen, was nicht praktikabel ist und nicht in Betracht gezogen wird.
Viertens: Verwenden Sie die API, um serielle Kommunikation selbst zu schreiben schwieriger, aber für uns ist es praktisch, die verschiedenen Funktionen zu realisieren, die wir wollen
In diesem Artikel verwenden wir die vierte Methode, um die serielle Kommunikation zu implementieren, aber anstatt sie selbst zu schreiben, verwenden wir die eines ausländischen Internetnutzers fertiges Paket Eine gute Klassenbibliothek, aber ihre Funktionen sind einfach, was uns genügt.
Während des gesamten SMS-Vorgangs des Terminals werden nur vier Funktionen zur Kommunikation mit der seriellen Schnittstelle verwendet: Öffnen, Schreiben, Lesen und Schließen der seriellen Schnittstelle. Das Folgende ist die Definition dieser vier Funktionen in der Klassenbibliothek:
Öffnen Sie die serielle Schnittstelle:
Funktionsprototyp: public void Open()
Hinweis: Offener Port ist im Voraus festgelegt.
Beispiel:
using JustinIO; static JustinIO.CommPort ss_port = new JustinIO.CommPort(); ss_port.PortNum = COM1; //端口号 ss_port.BaudRate = 19200; //串口通信波特率 ss_port.ByteSize = 8; //数据位 ss_port.Parity = 0; //奇偶校验 ss_port.StopBits = 1;//停止位 ss_port.ReadTimeout = 1000; //读超时 try { if (ss_port.Opened) { ss_port.Close(); ss_port.Open(); //打开串口 } else { ss_port.Open();//打开串口 } return true; } catch(Exception e) { MessageBox.Show("错误:" + e.Message); return false; }
Seriellen Port schreiben:
Funktionsprototyp : public void Write( byte[] WriteBytes)
WriteBytes sind die Bytes, die Sie schreiben. Beachten Sie, dass die Zeichenfolge für die Kommunikation in ein Byte-Array konvertiert werden muss
Beispiel:
ss_port.Write(Encoding.ASCII.GetBytes("AT CGMIr")); //Holen Sie sich die Mobiltelefonmarke
Seriellen Port lesen:
Funktionsprototyp: public byte[] Read(int NumBytes)
NumBytes Lesen Sie die Cache-Nummer, Achten Sie auf die Lesenummer. Es handelt sich um ein Byte-Array. In tatsächlichen Anwendungen ist eine Zeichenkonvertierung erforderlich .ASCII.GetString(ss_port. Read(128)); //128-Byte-Puffer lesen
Serielle Schnittstelle schließen:
Funktionsprototyp : ss_port.Close()
Beispiel:
ss_port.Close();
Aufgrund der Länge und der Kommunikation über die serielle Schnittstelle deckt es ein breites Themenspektrum ab, daher werde ich sie hier nur behandeln.
Oben haben wir die verschiedenen primitiven Technologien verstanden, die für Terminal-Textnachrichten erforderlich sind, und es ist Zeit, sie auszuprobieren.