Infatti è giusto una domanda che mi stavo facendo cinque minuti fa, e sembra non ci sia soluzione
porco cavolo, speravo di poter impostare direttamente il baud rate che mi pareva, ma a quanto pare all'hardware non piace questa soluzione...quindi penso che per forza di cose bisogna prendere un adattatore USB->DMX, non c'è altro modo, altrimenti mi sfasano troppo i canali...
Peccato, stava venendo fuori qualcosa di interessante 
Grazie del tuo aiuto oregon, almeno questo è servito per capire un qualcosa di più sulle comunicazioni da pc all'esterno 
casomai aprirò un altro thread per connettersi direttamente al dispositivo USB->DMX, ma penso che userò i programmi già fatti :P
comunque, posto come usare una "classe" (meglio file, visto che si parla di C) di collegamento seriale (almeno sento di aver fatto qualcosa di utile dopo tutto questo casino
)
codice:
comport.h
#ifndef _COMPORT_H
#define _COMPORT_H
#include <windows.h>
#include <string.h>
BOOL openComPort (const char* port);
void closeComPort (void);
DWORD sendData (char* data, DWORD size);
DWORD receiveData (char* data, DWORD size);
#endif /* _COMPORT_H */
codice:
comport.c
#include "comport.h"
static HANDLE _hCom;
BOOL openComPort (const char* port)
{
char buildStr[50];
DCB dcb;
COMMTIMEOUTS timeouts = {0};
_hCom = CreateFile(port,
GENERIC_READ,
0,
0,
OPEN_EXISTING,
0,
0);
if (_hCom == INVALID_HANDLE_VALUE)
{
_hCom = NULL;
return FALSE;
}
/* set timeouts */
timeouts.ReadTotalTimeoutConstant = 100;
timeouts.ReadTotalTimeoutMultiplier = 0;
timeouts.WriteTotalTimeoutMultiplier = 0;
timeouts.WriteTotalTimeoutConstant = 0;
if (SetCommTimeouts(_hCom, &timeouts) == FALSE)
return FALSE;
dcb.DCBlength = sizeof(DCB);
if (GetCommState(_hCom, &dcb) == FALSE)
return FALSE;
dcb.BaudRate = CBR_128000;
dcb.Parity = FALSE;
dcb.StopBits = TWOSTOPBITS;
dcb.ByteSize = 8;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fBinary = TRUE;
dcb.fRtsControl = FALSE;
dcb.fAbortOnError = FALSE;
return SetCommState(_hCom, &dcb);
}
void closeComPort(void)
{
CloseHandle(_hCom);
}
DWORD sendData (char* data, DWORD size)
{
DWORD numberOfBytesWritten;
WriteFile(_hCom,
data,
size,
&numberOfBytesWritten,
0);
return numberOfBytesWritten;
}
DWORD receiveData (char* data, DWORD size)
{
DWORD numberOfBytesRead;
ReadFile(_hCom,
data,
size,
&numberOfBytesRead,
0);
return numberOfBytesRead;
}