Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[c#] SerialPort geen nullkarakter

Pagina: 1
Acties:
  • 150 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hello,

Ik ben bezig met een c# project die serieel in verbinding staat met een device.

Nu is het zo dat als ik een " comport.Write() " doe, dat er automatisch een nullkarakter wordt verstuurd, terwijl ik dat niet wil. M device krijgt namelijk een interrupt op het nullkarakter, en dat mag niet gebeuren.

Hoe kan ik ervoor zorgen dat ENKEL mijn data verstuurd wordt zonder null-newline-linefeed e.d.
puur mijn data, bijvoorbeeld "123" en geen "123null"?

Alvast bedankt,

Google leverde mij niets op :(

  • Adion
  • Registratie: Januari 2001
  • Laatst online: 06:24
Hangt misschien af van hoe je comport.Write() gebruikt?
Als je het met een string als argument gebruikt wordt er misschien wel een null karakter aan toegevoegd, maar als je een byte array verstuurd, en zeker als je ook nog eens zelf de lengte opgeeft denk ik dat er geen null karakter wordt verstuurd.

Code die ik zelf gebruik ziet er ongeveer zo uit:
C#:
1
2
3
4
byte[] send = new byte[5];
send[0] = 255;
send[...] = (byte)...;
port.Write(send, 0, 5);

[ Voor 4% gewijzigd door Adion op 29-01-2008 15:09 ]

VirtualDJ 2024 - Fast Image Resizer - Instagram


Verwijderd

Topicstarter
Adion schreef op dinsdag 29 januari 2008 @ 15:09:
Hangt misschien af van hoe je comport.Write() gebruikt?
Als je het met een string als argument gebruikt wordt er misschien wel een null karakter aan toegevoegd, maar als je een byte array verstuurd, en zeker als je ook nog eens zelf de lengte opgeeft denk ik dat er geen null karakter wordt verstuurd.

Code die ik zelf gebruik ziet er ongeveer zo uit:
C#:
1
2
3
4
byte[] send = new byte[5];
send[0] = 255;
send[...] = (byte)...;
port.Write(send, 0, 5);
Met dezelfde code als u blijf ik een nullkarakter meeversturen .. erg vreemd :s

Verwijderd

Topicstarter
Probleem is opgelost .. domme fout.. als ik de poort sluit wordt er een null karakter gegenereerd :o

my bad!

bedankt

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

oplossing: de poort niet sluiten :9

Dat er een null teken wordt gestuurt als de poort sluit is eigenlijk vreemd. Er van uitgaande dat de write buffer leeg is, mag bij het sluiten niets meer worden verstuurd. Experimenteer eens met de proeprty SerialPort.DiscardNull.


Workaround: RS-232 kabel uit PC trekken voordat SerialPort.Close aanroept. Op die manier krijgt je device geen null character en zal er ook geen interrupt optreden.

If it isn't broken, fix it until it is..


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 20-11 18:44
DiscardNull() negeert null's in de input, niet in de output:
Gets or sets a value indicating whether null bytes are ignored when transmitted between the port and the receive buffer.
Misschien staat er trouwens wel wat in de write buffer. Qualistor, kun je niet kijken of het nullteken ook geschreven wordt als je in plaats van een Close(), een Flush() doet, tijdelijk natuurlijk, zodat je kunt onderscheiden of Close() een nullteken toevoegt, of dat je per ongeluk zelf ergens een nullteken toevoegt?

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett

Pagina: 1