谁有用api写的串口通讯的例子,用多线程实现,串口可传送汉字字符等,并且可一次传送的字符数够大 [email protected]我也想要一份用API写的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 [email protected]我也想要一份用API写的 lpDCB->fInX = lpDCB->fOutX = lpDCB->fOutxDsrFlow = lpDCB->fOutxCtsFlow = FALSEbool CRawSerialPort::SetupDCB( LPCTSTR lpDef, LPDCB lpDCB ){ memset( lpDCB, 0, sizeof(DCB) ); bool bSet = false; lpDCB->BaudRate = CBR_57600 ; lpDCB->ByteSize = 8 ; lpDCB->Parity = NOPARITY ; lpDCB->StopBits = ONESTOPBIT ; lpDCB->fBinary = TRUE ; lpDCB->fParity = TRUE ;// setup software flow control// bSet = (BYTE) ((FLOWCTRL( npTTYInfo ) & FC_XONXOFF) != 0) ;// dcb.XonChar = ASCII_XON ;// dcb.XoffChar = ASCII_XOFF ; lpDCB->XonLim = 100 ; lpDCB->XoffLim = 100 ; // other various settings lpDCB->fInX = lpDCB->fOutX = bSet ; lpDCB->XonChar = 0 ; lpDCB->XoffChar = 0 ; // setup hardware flow control// bSet = (BYTE) ((FLOWCTRL( npTTYInfo ) & FC_DTRDSR) != 0) ; lpDCB->fOutxDsrFlow = bSet ; if (bSet) lpDCB->fDtrControl = DTR_CONTROL_HANDSHAKE ; else lpDCB->fDtrControl = DTR_CONTROL_ENABLE ;// bSet = (BYTE) ((FLOWCTRL( npTTYInfo ) & FC_RTSCTS) != 0) ; lpDCB->fOutxCtsFlow = bSet ; if (bSet) lpDCB->fRtsControl = RTS_CONTROL_HANDSHAKE ; else lpDCB->fRtsControl = RTS_CONTROL_ENABLE ; return true;}email:nec211218#yahoo.com 完全不用Timer,因为用了多线程,每个线程实际上都处于等待状态,来了数据立刻给主窗口发消息(PostMessage),数据被截断有可能是缓冲区太小,如果是发送的数据被截断,也有可能是连续两次发送命令之间的时间间隔太短。关于串口的程序,你可以去我主页看看,有一个例子,VC和BCB都可以用。也是用的多线程,但它在连续两次发送命令之间的时间间隔太短时会有问题。你可以研究一下。 没觉得串口这种设备也需要多线程,为什么不采用driver模式,所有的收发请求都由这个driver串行来完成,反正本来串口就不是什么并行设备,不容许你不同的数据同时发送,这样会混在一起的 解决了,我想主要的原因还是由于串口速度太慢,cpu读完了前几个字符,下面的字符还没上来,于是他就以为接受完了。把以后的字符作为下一批的了。 http://www.csdn.net/expert/topic/544/544226.xml 求助:在vc6.0中运行CImg库程序为何总出错? sendto 后错误值getlasterror为10038 怎么动态修改listControl的值 小弟问个问题,关于银行家算法的 在IE里启用ActiveX文档服务器程序? 请问 UpdateAllViews 这个函数是立即执行的吗? 200分问题----内存搜索的问题``` 程序调试问题~~ VC++和其他语言的接口 一个小问题。。。 我的gluProject 怎么总是返回false? 线程同步问题?
我也想要一份用API写的
{
memset( lpDCB, 0, sizeof(DCB) );
bool bSet = false;
lpDCB->BaudRate = CBR_57600 ;
lpDCB->ByteSize = 8 ;
lpDCB->Parity = NOPARITY ;
lpDCB->StopBits = ONESTOPBIT ; lpDCB->fBinary = TRUE ;
lpDCB->fParity = TRUE ;// setup software flow control
// bSet = (BYTE) ((FLOWCTRL( npTTYInfo ) & FC_XONXOFF) != 0) ;// dcb.XonChar = ASCII_XON ;
// dcb.XoffChar = ASCII_XOFF ;
lpDCB->XonLim = 100 ;
lpDCB->XoffLim = 100 ;
// other various settings
lpDCB->fInX = lpDCB->fOutX = bSet ;
lpDCB->XonChar = 0 ;
lpDCB->XoffChar = 0 ;
// setup hardware flow control
// bSet = (BYTE) ((FLOWCTRL( npTTYInfo ) & FC_DTRDSR) != 0) ;
lpDCB->fOutxDsrFlow = bSet ;
if (bSet)
lpDCB->fDtrControl = DTR_CONTROL_HANDSHAKE ;
else
lpDCB->fDtrControl = DTR_CONTROL_ENABLE ;// bSet = (BYTE) ((FLOWCTRL( npTTYInfo ) & FC_RTSCTS) != 0) ;
lpDCB->fOutxCtsFlow = bSet ;
if (bSet)
lpDCB->fRtsControl = RTS_CONTROL_HANDSHAKE ;
else
lpDCB->fRtsControl = RTS_CONTROL_ENABLE ; return true;
}email:nec211218#yahoo.com
你可以研究一下。