社区
硬件/系统
帖子详情
串行通信:如何设置线路控制寄存器,设置奇偶校验位?
XiaoDingDangKM
2003-05-20 05:46:13
如何设置每一帧的奇偶校验位(第9位)?
同一问题的不同提法:如何设置线路控制寄存器某3位?
NT不允许用IN,OUT汇编指令,所以只有用高层函数,如何做呀?
...全文
255
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时,数据发送会根据ULCONn
寄存器
设置
的帧格式进行,包括开始
位
、数据
位
、
奇偶校验
位
和停止
位
。接收端会检测错误,如溢出、
奇偶校验
错误和帧错误,并
设置
相应的错误标志。波特率的计算公式是UBRDIVn = (int)...
51单片机与蓝牙模块的串口通信C程序
在51单片机中,串口通信的配置包括波特率设定、
奇偶校验
位
、停止
位
以及数据
位
等参数的
设置
。 蓝牙模块通常是基于蓝牙协议栈(Bluetooth Protocol Stack)的,如蓝牙4.0或更高版本的BLE(Bluetooth Low Energy)协议...
MSP430 Application UART(串口驱动)
5. **可配置参数**:用户可以自定义波特率、数据
位
、
奇偶校验
位
和停止
位
,以满足不同通信协议的需求。 **驱动程序的作用:** 在MSP430应用中,USBser.sys可能作为串口驱动程序使用,将MSP430通过USB接口模拟成一个...
STC89C52单片机与HC-06模块下
位
机测试程序
程序可能包括初始化蓝牙模块,
设置
通信参数(如波特率、
奇偶校验
等),以及数据的接收和发送功能。程序中包含的注释有助于理解代码的功能和工作流程,对于初学者来说尤其有用。 蓝牙通信的过程通常分为以下步骤: 1...
stm32实现modbus协议从机程序
设置
波特率、数据
位
、停止
位
和
奇偶校验
,确保与主机的通信参数一致。 2. **硬件接口**:虽然开发板没有485转换芯片,但通过RS485-232转换器可进行通信。RS485通常需要
控制
DE(数据使能)和RE(接收使能)引脚来切换...
硬件/系统
2,644
社区成员
17,232
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章