Hoi allen,
Ik zit met het volgende in de maag. Ik probeer een RS232 apparaat te besturen, met aan het einde van een HEX treintje een parity bit.
Als ik handmatig enkele voorbeelden verstuur reageert het apparaat prima, maar nu moet ik VB die parity bit zelf laten berekenen.
Het bericht wat ik versturen wil wordt met 1200 boud verzonden, even parity, 7 databits en 2 stopbits, en ziet er als volgt uit:
Startbit - data veld - CR - Parity bit
Voorbeeld:
7A [start] 74 74 63 63 74 [data] 0D [carriage return] 32 [parity]
Het data veld kan langer of korter zijn, de ontvanger ziet in CR en het parity bit altijd het einde. [Het data veld zelf mag dus nooit een CR bevatten].
De parity bit wordt berekend over de startbit, dataveld en CR. Alles geschied in HEX waarden.
Nu heb ik een code in C#, waarvan ik weet dat deze werkt. Alleen wil ik dit graag in VB6 doen. Gaarne help gevraagd:
De input data heb ik in een textbox [text1], de uitgang [data + parity bit] moeten naar text2.
Ik zit met het volgende in de maag. Ik probeer een RS232 apparaat te besturen, met aan het einde van een HEX treintje een parity bit.
Als ik handmatig enkele voorbeelden verstuur reageert het apparaat prima, maar nu moet ik VB die parity bit zelf laten berekenen.
Het bericht wat ik versturen wil wordt met 1200 boud verzonden, even parity, 7 databits en 2 stopbits, en ziet er als volgt uit:
Startbit - data veld - CR - Parity bit
Voorbeeld:
7A [start] 74 74 63 63 74 [data] 0D [carriage return] 32 [parity]
Het data veld kan langer of korter zijn, de ontvanger ziet in CR en het parity bit altijd het einde. [Het data veld zelf mag dus nooit een CR bevatten].
De parity bit wordt berekend over de startbit, dataveld en CR. Alles geschied in HEX waarden.
Nu heb ik een code in C#, waarvan ik weet dat deze werkt. Alleen wil ik dit graag in VB6 doen. Gaarne help gevraagd:
Code:
private byte[] AddParity(string _in)
{
byte parity = 0x7f;
List<byte> _out = new List<byte>();
ASCIIEncoding asc = new ASCIIEncoding();
byte[] bytes = asc.GetBytes(_in + '\r');
foreach (byte bt in bytes)
{
parity ^= bt;
_out.Add(bt);
}
_out.Add(parity);
return _out.ToArray();
}
De input data heb ik in een textbox [text1], de uitgang [data + parity bit] moeten naar text2.