[
Dans cette image, je suis en utilisant le logiciel de lecteur UHF pour tester cartes RFID afin mon résultat final dans les zones de texte doivent être uniques HEX 12 octets de la carte RFID [(image 2 preview)
en fait, je travaille sur Manageme Bibliothèque nt système (LMS) projet & Je suis en train de publier des livres en utilisant la identité de l'utilisateur (utilisateur ID Tag RFID dans HEX) et identité du livre (livre RFID ID Tag dans HEX). Lorsque l'utilisateur viendra dans la bibliothèque pour émettre un livre, il/elle va glisser sa carte RFID à la suite de l'utilisateur ID (12-bytes) dans HEX apparaîtra dans la première zone de texte instantanément et après il/elle montrera livre au lecteur que la personne veut émettre comme résultat ID Id de livre (12-bytes) dans HEX enverra à la deuxième zone de texte instantanément. (sortie du lecteur est de 20 octets comme représenté sur l'image 2)
Maintenant, les problèmes auxquels je fais face suivent:
1) Je ne reçois 20 octets de HEX dans la seule zone de texte par en utilisant la commande (_SerialPort1.ReadExisting()) certains des octets apparaissent dans la première zone de texte et le reste des octets apparaissent dans la deuxième zone de texte, (SerialPort1.ReadLine) cette commande est en cours de lecture et cette commande n'est pas de mon utiliser
2) Le deuxième problème auquel je suis confronté est que certains des octets qui apparaissent dans les zones de texte sont modifiés (par exemple) (CC FF FF 10 32 0D 01 E2 00 10 26 77 0D 01 51 23 30 23 55 2D) ces 20 octets doit être reçu, mais dans le premier octet reçu est réelle 3F, la deuxième est 3F, 3 est 3F et 19 est 3F et un octet avec une valeur différente HEX.
Aidez-moi! Mon code est fourni ci-dessous:
Imports System
Imports System.IO.Ports
Imports System.Threading
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.StopBits = IO.Ports.StopBits.One
SerialPort1.Handshake = Handshake.None
SerialPort1.PortName = "Com7"
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
SerialPort1.Open()
End Sub
Private Shared buffer As String = ""
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Try
'Dim rcv As String = SerialPort1.ReadLine
'Dim rcv As String = SerialPort1.ReadByte
Dim rcv As String = _SerialPort1.ReadExisting()
buffer = String.Concat(buffer, rcv)
Dim hexVal As String = ""
For Each c As Char In rcv
hexVal = hexVal & AsciiCharToHexSring(c)
Next
If txtReceived1.Text = "" Then
txtReceived1.Text = hexVal
ElseIf txtReceived2.Text = "" Then
txtReceived2.Text = hexVal
Else
txtReceived1.Text = ""
txtReceived2.Text = ""
End If
Catch ex As Exception
End Try
End Sub
Private Function AsciiCharToHexSring(s As Char) As String
Dim hexdigit As String = Hex(Asc(s))
If hexdigit.Length = 1 Then
hexdigit = "0" & hexdigit
End If
Return hexdigit
End Function
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
SerialPort1.Close()
txtReceived1.Text = ""
txtReceived2.Text = ""
End Sub
End Class
Veuillez me aider! @DavidWilson –
Avez-vous essayé la méthode Read avec un tableau d'octets? Vous lisez les données binaires sous forme de chaîne. https://msdn.microsoft.com/en-us/library/ms143549(v=vs.110).aspx – fofik
Non, je n'ai pas essayé parce que je ne sais pas comment utiliser cette fonction.Je suis débutant dans VB.Net.Peut-on mettre à jour mon code avec cette fonction? –