shedepe
21.12.2010, 18:23
Hallo,
mir gehen langsam die Ideen aus warum bei meiner seriellen Datenübertragung mit 2 Xbee Modulen, jeweils 1 Byte falsch auf der PC Seite ankommt, wenn ich vom Roboter Daten versende.
Mein Code auf Roboterseite ist:
void SendDataPackage(uint8_t Identifier, uint16_t value)
{
USART1_Transmit(_StartCond); //Das hier kommt richtig an
USART1_Transmit(Identifier); //Das hier kommt richtig an
//value zerlegen
uint8_t highB = (uint8_t)(value >> 8);
uint8_t lowB = (uint8_t)value;
USART1_Transmit(lowB); //Das hier kommt FALSCH an
USART1_Transmit(highB); //Das hier kommt richtig an
USART1_Transmit(_EndCond); //Das hier kommt richtig an
}
Auf PC Seite:
void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Debug.WriteLine("Recieved Event ausgeführt");
foreach (byte item in serialPort.ReadExisting())
{
Debug.WriteLine(item); //Hier werden alle empfangenen Bytes ausgegeben
}
//Mache was mit den Daten
}
Wie im oberen Code bereits kommentiert kommt das Identifier - Byte, das _StartCond - Byte, das _EndCond - Byte und das hByte richtig an.
Beim lByte jedoch wird immer 63 empfangen.
Meine Serialport Einstellungen sind:
8 Datenbits
1 Stopbit
NoParity
Baudrate : 115200
Verwunderlich ist das ganze für mich zudem, da Daten vom PC zum Roboter richtig übertragen werden.
mir gehen langsam die Ideen aus warum bei meiner seriellen Datenübertragung mit 2 Xbee Modulen, jeweils 1 Byte falsch auf der PC Seite ankommt, wenn ich vom Roboter Daten versende.
Mein Code auf Roboterseite ist:
void SendDataPackage(uint8_t Identifier, uint16_t value)
{
USART1_Transmit(_StartCond); //Das hier kommt richtig an
USART1_Transmit(Identifier); //Das hier kommt richtig an
//value zerlegen
uint8_t highB = (uint8_t)(value >> 8);
uint8_t lowB = (uint8_t)value;
USART1_Transmit(lowB); //Das hier kommt FALSCH an
USART1_Transmit(highB); //Das hier kommt richtig an
USART1_Transmit(_EndCond); //Das hier kommt richtig an
}
Auf PC Seite:
void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Debug.WriteLine("Recieved Event ausgeführt");
foreach (byte item in serialPort.ReadExisting())
{
Debug.WriteLine(item); //Hier werden alle empfangenen Bytes ausgegeben
}
//Mache was mit den Daten
}
Wie im oberen Code bereits kommentiert kommt das Identifier - Byte, das _StartCond - Byte, das _EndCond - Byte und das hByte richtig an.
Beim lByte jedoch wird immer 63 empfangen.
Meine Serialport Einstellungen sind:
8 Datenbits
1 Stopbit
NoParity
Baudrate : 115200
Verwunderlich ist das ganze für mich zudem, da Daten vom PC zum Roboter richtig übertragen werden.