串口写函数失败!

softwarewander 2007-06-29 03:43:01
我在调用串口的写函数的时候总是调用失败, 不知道怎么搞得。
大家帮我看一下。

谢谢!

我的写串口函数
DWORD SendData( const char *buffer, DWORD dwBytesWritten)
{
BOOL bWriteStat;

bWriteStat = WriteFile( hPort, buffer, dwBytesWritten, &dwBytesWritten, &m_OverlappedWrite );
if( !bWriteStat)
{
if ( GetLastError() == ERROR_IO_PENDING )
{
WaitForSingleObject( m_OverlappedWrite.hEvent, 1000 );
return dwBytesWritten;
}
return 0;
}
return dwBytesWritten;
}

打开串口正确返回,然后我是这样调用的
char p=5;
int rst=SendData(&p,strlen(&p));
总是返回0, 搞得很郁闷!
...全文
167 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
softwarewander 2007-06-30
  • 打赏
  • 举报
回复
我在发送之前,使用了clearcommerror函数,并在此处中断,察看comstat的时候
各个值是这样
fRlsdHold 0x00000001 unsigned long
fXoffHold 0x00000001 unsigned long
fTxim 0x00000001 unsigned long

但是我查了msdn说
fXoffHold:If this member is TRUE, transmission is waiting because the XOFF character was received
这我就很纳闷了, 我才刚打开串口,还没有发送任何的字符,就已经收到打印机的 XOFF信号了?

我的调用过程是这样的。
char * data;
printf("请输入:\n");
data=GenerateCode(gets(InputBuff));
if(Open(38400))
{
char p=5;
int rst=SendData(&p,strlen(&p)); //这里发送握手信号 ascii的05h
if(rst!=strlen(data))
{
printf("write falure!\n\a");
}
}
else
{
printf("can not open the serial port 0\a\n");
}
Sleep(500);

//bool ok = CloseHandle(hPort);
DWORD Re=ReadData(ReplyBuff,2); //然后读取打印机的应答信号

kenjoy115 2007-06-30
  • 打赏
  • 举报
回复
UP~`
softwarewander 2007-06-30
  • 打赏
  • 举报
回复
是不是太简单, 没人愿意回答阿?

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧