Запись в Com порт
Вот код:
DCB dcb;
COMMTIMEOUTS cto;
HANDLE hCom;
BOOL fSuccess;
char *pcCommPort = "COM3";
char *buf;
LPDWORD bNumWrite = 0, bNumRead = 0;
hCom = CreateFile(pcCommPort, GENERIC_READ|GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, NULL);
if(hCom == INVALID_HANDLE_VALUE)
{
printf("Create file failed with error %d.\n", GetLastError());
return(1);
}
fSuccess = GetCommState(hCom, &dcb);
if( !fSuccess )
{
printf("GetCommState failed with error %s.\n", GetLastError());
return(2);
}
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = 1;
dcb.StopBits = 0;
fSuccess = SetCommState(hCom, &dcb);
if( !fSuccess )
{
printf("SetCommState failed with error %s.\n", GetLastError());
return(3);
}
cto.ReadIntervalTimeout = 200;
if( !SetCommTimeouts(hCom, &cto) )
{
printf("SetCommTimeouts failed with error %d.\n", GetLastError());
return(4);
}
if( !SetupComm(hCom, 1024, 1024) ){
printf("SetupComm failed with error %d.\n", GetLastError());
return(5);
}
buf = "";
if( !WriteFile(hCom, buf,9, bNumRead, 0) )
printf("WriteFile failed with error %d.\n", GetLastError());
if( !ReadFile(hCom, buf, 1024, bNumRead, 0) )
printf("ReadFile failed with error %d.\n", GetLastError());
printf("Number of bytes written is %d.\n", bNumWrite);
CloseHandle(hCom);
Не могу понять в чём проблема.Помогите, если можете.
Тебя не смущает, что переменная buf имеет нулевую длину, а ты в функцию WriteFile пытаешся передать 9 байт.
Цитата:
Originally posted by Goose
Тебя не смущает, что переменная buf имеет нулевую длину, а ты в функцию WriteFile пытаешся передать 9 байт.
Тебя не смущает, что переменная buf имеет нулевую длину, а ты в функцию WriteFile пытаешся передать 9 байт.
Не особенно.
Пробовал и с заполненным buf, но результат один.
new или char[size]. Уверен, что проблема в этом.