.net을 통해 직렬 포트를 통해 데이터를 보내는 데 새로운 것이므로 TCP 연결을 구현 한 후에 나타났습니다. 직렬로 쉽게 할 수 있어요!주로 여러 개의 "패킷"으로 수신 된 데이터가있는 .NET 직렬 포트 도움말이 필요합니다.
- 내 여러 메시지로 분할되거나 수신되는 읽기 -이 : 그래서 내가 몇 가지에 붙어 무엇입니까 내 시리얼 양방향 통신 구현과 거의가 오전, 상단에 시작 COM 포트를 통한 조각화 된 응답으로 어떤 설정이 필요한지 또는이 문제를 해결하기 위해 코드를 어떻게 다르게 작성해야하는지 모릅니다. 무엇이 이것을 일으킬 수 있습니까?
(읽기 요청 된 각 임의 위치에)01: LS|DA090521|TI111 02: 043|q 03: PS|RN102|PTC|TA1 04: 0000|P#0|DA090521|TI111429|j
01: LS|DA090521|TI111043|q 02: PS|RN102|PTC|TA1040000|P#0|DA090521|TI111429|j
하지만있는 분할이다 : 나는 기본적으로 데이터
SerialPort_DataReceived.
에 브레이크 포인트에서 메시지를 검사하고 같이 전송해야
- 질문 1이 답변되었습니다. Chris W. 님 외! 나는 이제 조각으로부터 점차적으로 만들어지기를 기대하는 메시지를 가지고있다. (STX, {msg body}, ETX를 찾는다.) 메시지가 완전히 만들어 졌을 때 수행되는 액션은 thread-safe Queue로 처리된다. .
. 2. 나는 "|" 기호는 거의 모든주기를 통해 읽습니다. 내가 잘못 설정 한 명령, 직렬 통신의 유물 또는 장치가 보내는 메시지로 인해 발생합니까? (나는 그렇게 생각하지 않는다. 하이퍼 터미널 연결이이 캐릭터가 계속적으로 보내지는 것을 드러낸다.)
. 3. 각 방법에서 데이터를 올바르게 읽고 쓰고 있는지 확인할 수 있습니까?
저의 다른 두 가지 질문에 대해서도 고마워요.
관련 코드를 다음과 같이
...
// COM3, 9600, None, 8, One
SerialPort = new SerialPort(comPort, baudRate, parity, dataBits, stopBits);
if (SerialPort.IsOpen) SerialPort.Close();
// SerialPort.RtsEnable = true; // Request-to-send
// SerialPort.DtrEnable = true; // Data-terminal-ready
SerialPort.ReadTimeout = 150; // tried this, but didn't help
SerialPort.WriteTimeout = 150; // tried this, but didn't help
SerialPort.Open();
SerialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived);
}
void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// Process received data
SerialPort sp = (SerialPort)sender;
byte[] buffer = new byte[sp.BytesToRead];
int bytesRead = sp.Read(buffer, 0, buffer.Length);
// message has successfully been received
message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
}
public bool SendMessage(string text)
{
// Only send message if a client is connected
if (SerialPort != null && SerialPort.IsOpen)
{
byte[] buffer = Encoding.ASCII.GetBytes(text);
SerialPort.Write(buffer, 0, buffer.Length);
}
}
답장을 보내 주신 Chris에게 감사드립니다.좋아, 아마도 상자에 너무 많이 넣으려는 것입니다. 여러분이 말하는 것은 우리가 거의 자신의 '패킷 관리'를 할 필요가 있다는 것입니다. 부끄러운 점은 (아마도 몰랐습니다) 아마도 시리얼의 기초가 될 것입니다. 전송 후, msg 문자의 시작/끝 문자를 조사하고 포장하고 청소하고 헹구고 반복해야 할 수도 있습니다. – GONeale
'|' 124 btw와 같습니다. – GONeale
나는 그때를 모른다. 기본 XON/XOFF 값은 0x13 및 0x11입니다. - http://en.wikipedia.org/wiki/XON – ChrisW