C# 2, 10, 16 και 16 και τους κωδικούς ASCII τους --------//Μετατροπή διαφόρων τύπων χαρακτήρων σε C# για επικοινωνία σειριακής θύρας------------
Κατανόηση του μήκους των χαρακτήρων συμβολοσειρά s = "Είμαι 2 στρατιώτης"; int len = s.Μήκος; 6 χαρακτήρες byte[] sarr = System.Text.Encoding.Default.GetBytes(s); len = σαρ. Μήκος; 11 byte
Δεν έχει νόημα να μετατρέψετε το δεκαδικό σε συμβολοσειρά και πρέπει να μετατραπεί στον αντίστοιχο κώδικα ASCII int t1 = 81; Συμβολοσειρά s1 = t1. ToString(); Αυτή η δεκαδική μετατροπή αντιστοιχεί σε χαρακτήρες ASCII για να έχει νόημα. s1 = ((char)t1). ToString();
Δεκαεξαδικό σε συμβολοσειρά: Αυτό δεν έχει νόημα. Είναι tostring. int intAB = 0x16; s1 = intAB.ToString(); Δεκαεξαδικοί χαρακτήρες σε χαρακτήρες ASCII: byte babb = 0x45; string ass = ((char)babb). ToString();
Συμβολοσειρές ASCII σε δεκαδικούς αριθμούς συμβολοσειρά tr = "2Ab Liu"; συμβολοσειρά d =""; για (int i = 0; I < tr. Μήκος; i++) { int ii = (int)Convert.ToChar(tr. Υποσυμβολοσειρά (i, 1)); d = d +" "+ ii.ToString(); }
Συμβολοσειρά ASCII σε δεκαεξαδικό αριθμό συμβολοσειρά s2 = "2Ab Liu"; byte[] ba = System.Text.ASCIIEncoding.Default.GetBytes(s2); StringBuilder sb = νέο StringBuilder(); Foreach (byte b σε BA) { ΣΒ. Append(b.ToString("x") + " "); }
Δεκαεξαδικό σε δεκαδικό int intA = 0x16; Κατά τον ορισμό, πρέπει να είναι 0x συμβολοσειρά strA = "16"; Οι συμβολοσειρές μπορούν να είναι χωρίς int intA1 = Μετατροπή.ΣεInt32(intA); int intA2 = Μετατροπή.ΣεInt32(strA, 16);
10 έως 16 strA = Μετατροπή.ΣεΣυμβολοσειρά(intA2, 16);
Δεκαδικό σε δυαδικό, το δεκαεξαδικό είναι παρόμοιο int int10 = 10; συμβολοσειρά str2 = Convert.ToString(int10,2);
Δυαδικό σε δεκαδικό int10 = Μετατροπή.ΣεInt32(str2,2);
//-------------------------------------------------------------------------------
Πώς λαμβάνει η c# serialport ένα σύνολο δεκαεξαδικών αριθμών Πώς λαμβάνει το C# SerialPort ένα σύνολο δεκαεξαδικών αριθμών και πώς πρέπει να γραφτεί το πρόγραμμα; Καλύτερη απάντηση System.IO.Ports.SerialPort sp = νέο System.IO.Ports.SerialPort ("COM1"); int buffersize = 6; Το μέγεθος του δεκαεξαδικού αριθμού (ας πούμε 6Byte) Byte[] buffer = νέο Byte[buffersize]; Δημιουργία buffer σπ. Read(buffer, 0, buffersize); Διαβάστε από το COM1
Αυτό το σύνολο δεκαεξαδικών αριθμών υποβάλλεται σε επεξεργασία
Η σειριακή θύρα C# στέλνει δεδομένα Πόντοι επικηρυγμένων: 5 - Ώρα επίλυσης: 2009-10-19 21:15 Θέλω να στείλω μια δεκαεξαδική εντολή στη σειριακή θύρα, η συμβολοσειρά εντολής είναι: "00 00 00 1B 54 59 55 54 00 00 00 00 00 00 00 00 00 00 00 FF E1 00 05 00 0D 0A" Πώς μπορώ να μετατρέψω την παραπάνω συμβολοσειρά αριθμητικά, ώστε η σειριακή θύρα του υπολογιστή να γνωρίζει ότι η συμβολοσειρά που έστειλα είναι δεκαεξαδική; Συμπλήρωμα ερώτησης: Ποιος έχει ένα τέτοιο δείγμα κώδικα, παρακαλώ βοηθήστε με, είμαι κατασκευαστής υλικού, δεν είμαι εξοικειωμένος με το λογισμικό, ελπίζω ο πλοίαρχος να δώσει έναν λεπτομερή κωδικό, σας ευχαριστώ! Ερώτηση: daishuanqing - Ασκούμενος Επίπεδο 1 Καλύτερη απάντηση Προσθέστε μια αναφορά: Microsoft.VisualBasic (είναι κώδικας C#, αλλά πρέπει να αναφέρεται.) )
Διασχίστε τα SerialPortNames με τα ακόλουθα για να λάβετε όλες τις σειριακές θύρες Microsoft.VisualBasic.Devices.Computer pc = νέο Microsoft.VisualBasic.Devices.Computer(); foreach (συμβολοσειρά s στον υπολογιστή. Ports.SerialPortNames)
{ this.comboBox1.Items.Add(s);
}
Στη συνέχεια, το όνομα σειριακής θύρας comName που εμφανίζεται χρησιμοποιείται για τη λήψη του αντικειμένου λειτουργίας. Μπορείτε να ανοίξετε αυτήν τη σειριακή θύρα:
System.IO.Ports.SerialPort com = νέο System.IO.Ports.SerialPort(comName); com. Open();
Στη συνέχεια, τα δεδομένα μπορούν να εγγραφούν στη σειριακή θύρα
Αποστολή δεδομένων σε σειριακή θύρα: com. WriteLine(this.textBox1.Text); Οι πίνακες byte μπορούν επίσης να γραφτούν com. Write(bArray,0,5); Αναφέρεται στα 5 byte που ξεκινούν από το 0 που γράφουν τον πίνακα byte bArray
Τα δεδομένα μπορούν επίσης να γίνουν αποδεκτά: com. Γραμμή ανάγνωσης() Είναι επίσης δυνατή η ανάγνωση byte com. ReadByte();
Τέλος, είναι κλειστό: com. Κλείσιμο();
Επίσης, μετατρέψτε τη δεκαεξαδική συμβολοσειρά σε byte byte b = Μετατροπή.ΣεByte("1A",16); Η σειριακή θύρα C# στέλνει δεδομένα Πόντοι επικηρυγμένων: 5 - Ώρα επίλυσης: 2009-10-19 21:15 Θέλω να στείλω μια δεκαεξαδική εντολή στη σειριακή θύρα, η συμβολοσειρά εντολής είναι: "00 00 00 1B 54 59 55 54 00 00 00 00 00 00 00 00 00 00 00 FF E1 00 05 00 0D 0A" Πώς μπορώ να μετατρέψω την παραπάνω συμβολοσειρά αριθμητικά, ώστε η σειριακή θύρα του υπολογιστή να γνωρίζει ότι η συμβολοσειρά που έστειλα είναι δεκαεξαδική; Συμπλήρωμα ερώτησης: Ποιος έχει ένα τέτοιο δείγμα κώδικα, παρακαλώ βοηθήστε με, είμαι κατασκευαστής υλικού, δεν είμαι εξοικειωμένος με το λογισμικό, ελπίζω ο πλοίαρχος να δώσει έναν λεπτομερή κωδικό, σας ευχαριστώ! Ερώτηση: daishuanqing - Ασκούμενος Επίπεδο 1 Καλύτερη απάντηση Προσθέστε μια αναφορά: Microsoft.VisualBasic (είναι κώδικας C#, αλλά πρέπει να αναφέρεται.) )
Διασχίστε τα SerialPortNames με τα ακόλουθα για να λάβετε όλες τις σειριακές θύρες Microsoft.VisualBasic.Devices.Computer pc = νέο Microsoft.VisualBasic.Devices.Computer(); foreach (συμβολοσειρά s στον υπολογιστή. Ports.SerialPortNames)
{ this.comboBox1.Items.Add(s);
}
Στη συνέχεια, το όνομα σειριακής θύρας comName που εμφανίζεται χρησιμοποιείται για τη λήψη του αντικειμένου λειτουργίας. Μπορείτε να ανοίξετε αυτήν τη σειριακή θύρα:
System.IO.Ports.SerialPort com = νέο System.IO.Ports.SerialPort(comName); com. Open();
Στη συνέχεια, τα δεδομένα μπορούν να εγγραφούν στη σειριακή θύρα
Αποστολή δεδομένων σε σειριακή θύρα: com. WriteLine(this.textBox1.Text); Οι πίνακες byte μπορούν επίσης να γραφτούν com. Write(bArray,0,5); Αναφέρεται στα 5 byte που ξεκινούν από το 0 που γράφουν τον πίνακα byte bArray
Τα δεδομένα μπορούν επίσης να γίνουν αποδεκτά: com. Γραμμή ανάγνωσης() Είναι επίσης δυνατή η ανάγνωση byte com. ReadByte();
Τέλος, είναι κλειστό: com. Κλείσιμο();
Επίσης, μετατρέψτε τη δεκαεξαδική συμβολοσειρά σε byte byte b = Μετατροπή.ΣεByte("1A",16); |