社区
硬件/系统
帖子详情
串行通信:如何设置线路控制寄存器,设置奇偶校验位?
XiaoDingDangKM
2003-05-20 05:46:13
如何设置每一帧的奇偶校验位(第9位)?
同一问题的不同提法:如何设置线路控制寄存器某3位?
NT不允许用IN,OUT汇编指令,所以只有用高层函数,如何做呀?
...全文
232
8
打赏
收藏
串行通信:如何设置线路控制寄存器,设置奇偶校验位?
如何设置每一帧的奇偶校验位(第9位)? 同一问题的不同提法:如何设置线路控制寄存器某3位? NT不允许用IN,OUT汇编指令,所以只有用高层函数,如何做呀?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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位顶一下。
关注
串行通信
实验 c源码
/*2FB是通信
线路
控制
寄存器
,
设置
8数据
位
,一个停止
位
,有
奇偶校验
位
*/ outportb(0x3FC,0x03); /*
设置
2FC端口调制解调
控制
寄存器
,使8250输出DTR(数据终端准备好)和RTS(请求发送)*/ outportb(0x3F9,0x00); /*...
visual C++_Turbo C串口通信编程实践
6.1.3数据
位
、
奇偶校验
、停止
位
等数据格式
设置
6.1.4 查询I/O方式相关
设置
6.1.5 中断I/O通信方式相关
设置
6.1.6 Modem
寄存器
6.2 COMRXTX程序实例 6.3 通用实例程序GSerial类 6.4 用GSerial类
控制
多...
Java安全编码规则:Java串行化
本视频课程将为开发人员提供安全实现Java串行化的实用指南。 概要介绍 安全编码专家Robert C. Seacord会指导开发人员理解Java串行化和固有的安全风险。Seacord还展示了如何安全地实现可串行化的类,以及如何评估移植...
基于RS485的电容式土壤湿度和温度传感器modbus协议C++代码
传感器进行周期性测量(默认情况下每500ms一次),通过写入Modbus
寄存器
之一可以更新测量...
串行通信
参数可以通过写入相关
寄存器
来更新波特率,
奇偶校验
位
和地址。如果写入任何一个
寄存器
,传感器将重置并引导新参数。
Visual C++/Turbo C串口通信编程实践及源代码-3
6.1.3 数据
位
、
奇偶校验
、停止
位
等数据格式
设置
170 6.1.4 查询i/o方式相关
设置
171 6.1.5 中断i/o通信方式相关
设置
171 6.1.6 modem
寄存器
172 6.2 comrxtx程序实例 173 6.3 通用实例程序gserial类 175 6.4 ...
硬件/系统
2,640
社区成员
17,239
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章