[C++] data schrijven naar seriele poort

Pagina: 1
Acties:

  • active2
  • Registratie: Juni 2001
  • Laatst online: 17-07 21:56

active2

Google is your friend

Topicstarter
Met write() --> een functie in c++ kun je data op de seriele poort zetten.

Maar nu zit ik met het volgende probleem:

Ik wil graag binaire data op de poort zetten. En hoe moet dat?

Dit is hoe je data op die seriele poort zet:
C++:
1
2
3
4
5
6
7
int write_data(int fd) {
  int n;

  n = write(fd, "ATZ\r", 4);
  if (n < 0)
    fputs("write() of 4 bytes failed!\n", stderr);
}

Maar hoe kan ik die "ATZ\r" als binaire data op de seriele poort zetten?

kewl nieuwe smilies B) }) 8)7

Vergeten:
Ik kan de binaire data wel omzetten naar hexadecimale data. Omdat ik weet wat de commando's voor de controller zijn.

Google, Het mirakel van de 21e eeuw!!!!


Verwijderd

Even voor het begrip: dit stukje code is gewoon C, alhoewel een C++ compiler er ook wel mee overweg kan natuurlijk.

Wat je nu doet zou al moeten werken lijkt me. Het 2de argument (een char*) van write wordt als buffer geinterpreteerd, niet als null-terminated string. Met het 3de argument geef je aan hoeveel bytes er vanaf de buffer pointer gelezen (en vervolgens weggeschreven) moeten worden.

  • active2
  • Registratie: Juni 2001
  • Laatst online: 17-07 21:56

active2

Google is your friend

Topicstarter
Verwijderd schreef op 31 juli 2002 @ 20:39:
Even voor het begrip: dit stukje code is gewoon C, alhoewel een C++ compiler er ook wel mee overweg kan natuurlijk.

Wat je nu doet zou al moeten werken lijkt me. Het 2de argument (een char*) van write wordt als buffer geinterpreteerd, niet als null-terminated string. Met het 3de argument geef je aan hoeveel bytes er vanaf de buffer pointer gelezen (en vervolgens weggeschreven) moeten worden.
Het werkt dat klopt :)

Maar nu dit:
Ik heb bijvoorbeeld 4 bytes:
00110111
00001000
00110100
01011000
En dat moet naar de seriele poort hoe doe ik dat?

Google, Het mirakel van de 21e eeuw!!!!


Verwijderd

Ik neem aan dat je de bytes gewoon decimaal beschikbaar hebt. Je kan dan gewoon zoiets doen...
code:
1
2
3
4
5
6
7
8
9
int write_data(int fd)
{
    char buf[4];
    buf[0] = 55; 
    buf[1] = 8; 
    buf[2] = 52; 
    buf[3] = 88; 
    n = write(fd, buf, 4);  
etcetera

  • active2
  • Registratie: Juni 2001
  • Laatst online: 17-07 21:56

active2

Google is your friend

Topicstarter
Thanks :)

Google, Het mirakel van de 21e eeuw!!!!