Synchrone en 'onbewerkte' toegang tot USB-seriële onder unix-achtige OS

Ik heb een AVR die ik heb ingesteld om op te treden als een USB-serieel apparaat wanneer ik deze op de computer aansluit. Ik wil er via seriële commando's naartoe sturen.

Het lukt me echter niet om de opdrachten te ontvangen om een ​​antwoord te verzenden en te ontvangen. Ik verstuur 16 bits per keer en verwacht een antwoord van 16 bits te ontvangen, maar in plaats daarvan wacht mijn programma op een antwoord. Ik vermoed dat het te maken heeft met uitvoerbuffering op het seriële en USB-stuurprogramma.

Ik heb geprobeerd manieren te vinden om de seriële poort te besturen, maar het is moeilijk om uit te vinden welke opties ik nodig heb, omdat veel opties alleen van toepassing zijn op echte seriële poorten (geen USB-serieel).

Op dit moment gebruik ik deze code om het apparaatbestand te openen

int fd = open(device, O_RDWR | O_NDELAY | O_SYNC | O_NOCTTY);
struct termios tio = {0};
cfmakeraw(&tio);
tio.c_cc[VMIN] = 2;
tcsetattr(fd,TCSANOW,&tio);

Kan iemand me helpen de juiste opties te selecteren voor wat ik nodig heb? Ik heb alleen synchrone, directe toegang nodig met geen (of weinig) uitvoerbuffering.

2

Geen antwoorden

0