저는이 포럼에 처음 왔으므로 이것이 정말이 장소에 있는지 확실하지 않습니다. 필요할 경우 더 적절한 포럼으로 자유롭게 이동하십시오. 나는 VB 전송 및 직렬 장치에 HEX 데이터를 수신 2010 년 간단한 응용 프로그램을 쓰고 있어요 그래서 좋아시리얼에서 HEX 데이터 수신 및 처리
. 지금 나는 "보내는"부분을 가지고 있지만, 나는받는 부분에 어려움을 겪고있다. 이 장치는 매초마다 응용 프로그램에 HEX 데이터의 상수 스트림을 보냅니다. 받은 문자열의 특정 바이트를보고 IF 문 내에서 해당 작업을 수행 할 응용 프로그램이 필요합니다 (예 : 문자열의 10 번째 바이트가 "& 10"과 같은 경우).
이 데이터를 가져 오는 방법을 모르겠지만 올바른 바이트를 구문 분석 한 다음 그 데이터로 무언가를하십시오. 다음과 같이/I이 사용하려고했습니다 (하지만 작동하지 않습니다) 코드는 다음과 같습니다 -
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim statusget() As String
Dim str1 As String
str1 = SerialPort1.ReadExisting()
statusget = str1.Split(",")
If statusget(10) = "&01" Then
btn_tx1.BackColor = Color.Red
btn_tx2.BackColor = SystemColors.Control
btn_tx3.BackColor = SystemColors.Control
btn_tx4.BackColor = SystemColors.Control
btn_tx5.BackColor = SystemColors.Control
btn_tx6.BackColor = SystemColors.Control
btn_tx7.BackColor = SystemColors.Control
btn_tx8.BackColor = SystemColors.Control
End If
End Sub
또한, 내가 표시하는 서식있는 텍스트 상자를 가지고있는 기기에서 수신 된 모든 데이터 내가 할 수있는 그렇게 그것을 모니터하십시오. 그것은 "uZ !!!"와 같은 이상한 인코딩 (16 진수가 아닌)으로 반환된다는 사실을 제외하고는 잘 동작합니다.
제공 할 수있는 도움에 감사드립니다. :)
편집 - 전송 데이터에 대한 코드 : 진수 읽기 쉽게 문자열로 이진 데이터를 포맷하는 단지 방법으로
Private Sub btn_tx1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_tx1.Click
Dim buftx1() As Byte = {&HF0, &H5A, &HF, &H5, &H1, &H11, &H0, &H0, &H0, &H0, &H0, &H0, &H30, &H37, &HFF}
SerialPort1.Write(buftx1, 0, buftx1.Length)
End Sub
이것은 완전히 꺼져 있지만 그만한 가치가 있습니다. 그게 가능해 !!!! 16 진수 문자열을 나타냅니다. AB를 헥스로 보냈다고합시다. 그것은 문자열 결과 (ASCII)로 "V"를 제공하는 비트 단위의 01010110입니다. str1을 16 진수로 변환하면 효과가 있습니다. 가능하면 데이터를 보내는 코드를 제공하십시오. – WozzeC
음 str1 변수를 16 진수로 변환하는 방법은 무엇입니까? 나는 방금 전송과 함께 게시물을 업데이 트했습니다. – logicallysynced
1 : 문자열을 바이트로 변환합니다. http://www.chilkatsoft.com/faq/dotnetstrtobytes.html 2 : Bytearr을 16 진수 문자열로 바꾸십시오. http://social.msdn.microsoft.com/Forums/eu/csharpgeneral/thread/3928b8cb-3703-4672-8ccd-33718148d1e3 – WozzeC