社区
硬件/系统
帖子详情
串行通信:如何设置线路控制寄存器,设置奇偶校验位?
XiaoDingDangKM
2003-05-20 05:46:13
如何设置每一帧的奇偶校验位(第9位)?
同一问题的不同提法:如何设置线路控制寄存器某3位?
NT不允许用IN,OUT汇编指令,所以只有用高层函数,如何做呀?
...全文
256
8
打赏
收藏
串行通信:如何设置线路控制寄存器,设置奇偶校验位?
如何设置每一帧的奇偶校验位(第9位)? 同一问题的不同提法:如何设置线路控制寄存器某3位? NT不允许用IN,OUT汇编指令,所以只有用高层函数,如何做呀?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhaoweidf
2003-05-25
打赏
举报
回复
学习
RomanticProgrammer
2003-05-25
打赏
举报
回复
<RS-232和调制解调器高级通信编程》(人民邮电)
里面有用汇编实现地代码。
RomanticProgrammer
2003-05-25
打赏
举报
回复
<RS-232和调制解调器高级通信编程》(人民邮电)
里面有用汇编实现地代码。
NowCan
2003-05-21
打赏
举报
回复
我估计这个问题讨论结果是让你写驱动!
你的要求实际上和发送9数据位一样。
XiaoDingDangKM
2003-05-21
打赏
举报
回复
如何设置每一帧的奇偶校验位(第9位)?
同一问题的不同提法:如何设置线路控制寄存器某3位?
因为我要将奇偶位设置位1来告诉单片机群我(PC)发来的是地址,置为0说明我发来的是
数据。
NT不允许用IN,OUT汇编指令,所以只有用高层函数,如何做呀?
leejd
2003-05-20
打赏
举报
回复
设置STR和DTR
参考代码:
====================================
//串口初始化
bool __fastcall TComm::ComInit(AnsiString Port, int Baud, int Byte, int Parity,
int Stop, HANDLE& hCom)
{
DCB dcb;
COMMTIMEOUTS CommTimeOuts;
BOOL fSuccess;
//打开串口
hCom = CreateFile(Port.c_str(),
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
if (hCom == INVALID_HANDLE_VALUE)
{
MessageBox(NULL,"打开通信设备文件失败!","错误",MB_OK);
return false;
}
if(!SetupComm(hCom,BLOCK_LENGTH,BLOCK_LENGTH))
{
MessageBox(NULL,"设置串行口内部输入、输出缓冲区长度操作异常!","错误",MB_OK);
return false;
}
if (!GetCommState(hCom, &dcb))
{
MessageBox(NULL,"获取通信设备控制块数据结构操作异常!","错误",MB_OK);
return false;
}
//以下五行参数用于三线连接,五线连接则忽略
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity = FALSE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.BaudRate = Baud;
dcb.fBinary = 1 ;
dcb.fNull = 0 ;
dcb.ByteSize = Byte;
dcb.Parity = Parity;
dcb.StopBits = Stop;
dcb.fInX = FALSE;
dcb.fOutX = FALSE;
dcb.XonLim = BLOCK_LENGTH/4;
dcb.XoffLim = BLOCK_LENGTH/4;
if (!SetCommState(hCom, &dcb))
{
MessageBox(NULL,"设置通信设备控制块数据结构操作异常!","错误",MB_OK);
return false;
}
GetCommTimeouts(hCom, &CommTimeOuts);
CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
CommTimeOuts.WriteTotalTimeoutConstant = 5000;
SetCommTimeouts(hCom, &CommTimeOuts);
memset(&osRead, 0, sizeof(OVERLAPPED));
memset(&osWrite, 0, sizeof(OVERLAPPED));
osRead.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
osWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
BufferOffset=0;
return true;
}
albeta
2003-05-20
打赏
举报
回复
MSDN光盘里头或者微软的MSDN里头有一篇关于串口编程的文章,去看看吧。
meCAD
2003-05-20
打赏
举报
回复
冲这第9位顶一下。
关注
UART串行口简介
UART串行口简介,端口,相关
寄存器
的详细介绍等
51单片机与蓝牙模块的串口通信C程序
51单片机与蓝牙模块的串口51单片机与蓝牙模块的串口通信C程序通信C程序
MSP430 Application UART(串口驱动)
MSP430 Application UART(串口驱动)
STC89C52单片机与HC-06模块下
位
机测试程序
STC89C52单片机与HC-06模块下
位
机测试程序,带有注释,不懂的可以到我的博客留言 http://blog.csdn.net/itas109
stm32实现modbus协议从机程序
modbus协议的下
位
机实现,芯片采用stm32f103vet6,我的开发板没有485转换芯片,所以用的是RS485-232的转换器,没有使能引脚,但是只要稍加修改就可以改为
控制
485芯片。
硬件/系统
2,644
社区成员
17,232
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章