社区
C语言
帖子详情
奇怪的串口问题,各位帮忙
fang_jb
2003-03-12 01:54:29
我的程序里开串口读写都是正常的,但却存在一个很奇怪的问题
每次重新启动机器以后,用我的程序第一次去读串口都是读不到任何信息,
需要用超级终端去连一下,连过之后再用我的程序,就可以工作了,
似乎是需要有个东西去引导一下还是怎么样的,是不是串口的初始化有什么问题?
请各位有经验的帮忙,谢谢先
...全文
29
7
打赏
收藏
奇怪的串口问题,各位帮忙
我的程序里开串口读写都是正常的,但却存在一个很奇怪的问题 每次重新启动机器以后,用我的程序第一次去读串口都是读不到任何信息, 需要用超级终端去连一下,连过之后再用我的程序,就可以工作了, 似乎是需要有个东西去引导一下还是怎么样的,是不是串口的初始化有什么问题? 请各位有经验的帮忙,谢谢先
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fang_jb
2003-03-12
打赏
举报
回复
写的部分里面有一些port->那些是传递进来的一个参数,把它去掉就可以看了
fang_jb
2003-03-12
打赏
举报
回复
BOOL bRead = TRUE;
BOOL bResult = TRUE;
DWORD dwError = 0;
DWORD BytesRead = 0;
COMSTAT comstat;
unsigned char RXBuff;
for(;;)
{
EnterCriticalSection(m_csCommunicationSync);
bResult = ClearCommError(m_hComm, &dwError, &comstat);
LeaveCriticalSection(m_csCommunicationSync);
if (comstat.cbInQue == 0)
break;
EnterCriticalSection(&port->m_csCommunicationSync);
if(bRead)
{
m_ov.Offset = 0;
m_ov.OffsetHigh = 0;
bResult = ReadFile(port->m_hComm,&RXBuff,1,&BytesRead,&port->m_ov);
if(!bResult)
{
switch (dwError = GetLastError())
{
case ERROR_IO_PENDING:
bResult = GetOverlappedResult(m_hComm,&m_ov,&BytesRead,TRUE);
if (!bResult)
ProcessErrorMessage("GetOverlappedResults() in ReadFile()");
break;
default:
ProcessErrorMessage("ReadFile()");
break;
}
}
else
bRead = TRUE;
}
if (!bRead)
{
bRead = TRUE;
bResult = GetOverlappedResult(port->m_hComm, // Handle to COMM port
&port->m_ov, // Overlapped structure
&BytesRead, // Stores number of bytes read
TRUE); // Wait flag
if (!bResult)
port->ProcessErrorMessage("GetOverlappedResults() in ReadFile()");
} // close if (!bRead)
LeaveCriticalSection(&m_csCommunicationSync);
}
这里是读串口的部分,暂时没使用写串口
求教
fang_jb
2003-03-12
打赏
举报
回复
if (m_ov.hEvent != NULL)
ResetEvent(m_ov.hEvent);
m_ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (m_hWriteEvent != NULL)
ResetEvent(m_hWriteEvent);
m_hWriteEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (m_hShutdownEvent != NULL)
ResetEvent(m_hShutdownEvent);
m_hShutdownEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
m_hEventArray[0] = m_hShutdownEvent;
m_hEventArray[1] = m_ov.hEvent;
m_hEventArray[2] = m_hWriteEvent;
InitializeCriticalSection(&m_csCommunicationSync);
bool bResult = FALSE;
char *szPort = new char[10];
EnterCriticalSection(&m_csCommunicationSync);
if (m_hComm != NULL)
{
CloseHandle(m_hComm);
m_hComm = NULL;
}
sprintf(szPort, "COM%d", m_data.portnr);
m_hComm = CreateFile(szPort,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL); delete [] szPort;
if (m_hComm == INVALID_HANDLE_VALUE)
return FALSE;
PurgeComm(m_hComm, PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_TXABORT);
SetCommMask(m_hComm, EV_RXCHAR);
GetCommState(m_hComm, &m_dcb);
//这里的m_data是一个设置好的结构,里面就是些串口的基本参数
m_dcb.BaudRate = m_data.baud;
m_dcb.ByteSize = m_data.databits;
m_dcb.Parity = m_data.parity;
m_dcb.StopBits = m_data.stopbits;
m_dcb.fBinary = TRUE;
m_dcb.fParity = FALSE;
SetCommState(m_hComm, &m_dcb);
LeaveCriticalSection(&m_csCommunicationSync);
unsigned dThreadNb = 0;
m_hThread = reinterpret_cast<HANDLE>(_beginthreadex(NULL,0,SerialPortThread,this,0,&dThreadNb));
if (m_hThread == NULL)
return FALSE;
return TRUE;
这里是打开串口的部分
morningsun
2003-03-12
打赏
举报
回复
源代码呢?
yzb1000
2003-03-12
打赏
举报
回复
学习,up
fang_jb
2003-03-12
打赏
举报
回复
我顶
fang_jb
2003-03-12
打赏
举报
回复
顶一下顶一下,高手进来帮忙啊
Qt 上位机
串口
编程 Modbus编程
串口
(Serial Port),也称串行通讯接口(通常指COM口),
串口
通信是指将数据一个比特一个比特地逐位进行传输的通信模式。其特点是通信线路简单,传送速度较慢。Qt
串口
通信是借助一个QSerialPort的对象来方便的对...
嵌入式Linux
串口
0出错,嵌入式Linux
串口
通讯测试
问题
嵌入式Linux
串口
通讯测试
问题
:经过实验,从Linux(PC)通过
串口
向嵌入式Linux开发板发送数据时,
串口
初始化完毕后遇到回车(0x0d)或换行(0x0a)才开始从
串口
接收数据,回车或换行前的数据接收不到,回车或换行后的数据接收...
linux
串口
换行十六制,关于嵌入式linux下的
串口
通讯
问题
---回车、换行、缓冲
嵌入式Linux
串口
通讯测试
问题
:经过实验,从Linux(PC)通过
串口
向嵌入式Linux开发板发送数据时,
串口
初始化完毕后遇到回车(0x0d)或换行(0x0a)才开始从
串口
接收数据,回车或换行前的数据接收不到,回车或换行后的数据接收...
关于嵌入式linux下的
串口
通讯
问题
---回车、换行、缓冲
嵌入式Linux
串口
通讯测试
问题
: 经过实验,从Linux(PC)通过
串口
向嵌入式Linux开发板发送数据时,
串口
初始化完毕后遇到回车(0x0d)或换行(0x0a)才开始从
串口
接收数据,回车或换行前的数据接收不到,回车或换行后的数据...
Matlab功率驱动,matlab 驱动 电机
问题
各位大侠,遇到了
问题
,请
帮忙
:用matlab 使用 动态链接库(dll)的时候 遇到了
问题
:此程序是用matlab通过
串口
控制maxon电机运行程序如下:function EPOS = StartEpos(COM,NodeID,operationMode)%===================...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章