gpt4 book ai didi

c - 串口,WriteFile影响ReadFile

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:29 27 4
gpt4 key购买 nike

串口代码有问题。

我只是这样做:

opencomm(); 
send();
closecomm();

ClearCommError()(在 recv() 内) 返回comstat.cbInQue 发送的数量相同。

因此,如果 sizeof (sendbuff) 为 100,我在 comstat.cbInQue 中得到 100。

在使用 ReadFile 读取一个字节后,comstat.cbInQue 递减(当然是在随后的 ClearCommError() 之后)。

读取的值不是写入的值。没有设备连接到该端口。

最奇怪的是这段代码曾经可以工作,但现在不行了。

WORD sendbuff[128];
static HANDLE hComm;

static void opencomm (void)
{
static COMMTIMEOUTS timeouts = {0,0,0,0,0};

static DCB dcb = {
sizeof (DCB), // DCBlength
115200, // * BaudRate
1, // fBinary
0, // * fParity
0, // fOutxCtsFlow
0, // fOutxDsrFlow
0, // fDtrControl
0, // fDsrSensitivity
1, // fTXContinueOnXoff
0, // fOutX
0, // fInX
0, // fErrorChar
0, // fNull
0, // fRtsControl
0, // fAbortOnError
0, // fDummy2
0, // wReserved
8*k, // XonLim
2*k, // XoffLim
8, // * ByteSize
0, // * Parity
0, // * StopBits
0, // XonChar
1, // XoffChar
0, // ErrorChar
0, // EofChar
0, // EvtChar
0 // wReserved1
};

hComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hComm != INVALID_HANDLE_VALUE) {
SetupComm(hComm, 16*k, 16*k);
SetCommState(hComm, &dcb);
SetCommTimeouts(hComm, &timeouts);
}
}

static void closecomm (void)
{
CloseHandle(hComm);
}

static BYTE recv (void)
{
BYTE text;
DWORD temp;

COMSTAT comstat;

while (1) {
ClearCommError(hComm, &temp, &comstat);
if (comstat.cbInQue != 0) break;

Sleep(1);
}

ReadFile(hComm, &text, 1, &temp, NULL);

return text;
}

static void send (void)
{
DWORD temp;

// send to other comp
WriteFile(hComm, sendbuff, sizeof (sendbuff), &temp, NULL);

// check other comp done
if (recv() != 0xAA) {
Beep(1000, 100);
quit(); // comm error
}
}

最佳答案

是电缆。未正确屏蔽且太长。

关于c - 串口,WriteFile影响ReadFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118096/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com