- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为电缆增加屏蔽缩短了最大长度,但是屏蔽有时对于阻止噪声混入电缆或者从电缆中“溢出〞是需要的。对于屏蔽的双绞线,建议将导线到导线电容乘以3以便把导线到屏蔽的电容考虑在内。
?? 因此计算屏蔽导线的电缆长度的公式如下:
?? 电缆长度=(2500—接受器输入电容)/(电缆电容×3)
?? 电缆长度的单位为ft,输入电容的单位是pF,电缆电容的单位是pF/ft。
这就将屏蔽双绞线电缆的最大长度削减到66 ft。
5.3〕 双绞线
5.4〕 电缆测试结果
RS-232-C标准规定,在码元畸变小于4%的情况下,传输电缆长度应为50 英尺〔约15米〕,其实这个4%的码元畸变是很保守的,在实际应用中往往按码元畸变10-20%的范围工作的,所以最大距离会远超过15米。
波特率bps
110
? 1500??
900
300
1500
900
1200
900
900
2400
?300?
150
4800
?300?
75
9600
75?
75
?
6. 串口通信功能的实现
单片机实现串口通讯一般使用UART接口或利用GPIO口模仿异步串行通讯数据格式,外加驱动芯片连接RS-232口。
1. 翻开串口
以下程序用于以同步方式翻开串口COM1;
HANDLE hCom;
DWORD dwErrorHcomm=CreateFile(“COM1〞,GENERIC_READ|GENERIC_WRITE
,0, NULL,OPEN_EXISTING, 0, NULL);
if (hComm==(HANDLE)0Xffff)
{
dwError=GetLastError();
MessageBox(dwError);
}
2. 配置串口
配置串口是通过改变设备控制块DCB(Device Control Block)的成员变量值来实现的,程序实现如下:
DCB dcb
dcb.BaudRate=9600;//波特率为9600bps
dcb.ByteSize=8;//数据位8位
dcb.Parity=EVENPARTTY;//有校验
dcb.StopBits=ONESTOPRTT; //一个停止位
SetCommState(hCom,dcb);
3. 数据读写
bReadStatus=ReadFile(hCom,buffer,length,length m_lpOverlapped);
if(!bReadStatus)
{
if(GetLastError()=ERROR_IO_PENDING)
{
WaitForSingleObject(m_lpOverlapped,hEvent,1000);
return((char)length);
}
return 0;
}
bWriteStatus=WriteFile(hCom,buffer,length,length,m_lpOverlapped)
if(!bWriteStatus)
{
if(GetLastError()=ERROR_IO_PENDING)
{
WaitForSingleObject(m_lpOverlapped, hEvent,1000);
return((char)length);
}
return 0;
}
4. 程序的编制
用VC++进行程序的编制首先要对串口进行初始化,设定端口,通信速率和校验方式,并在使用前翻开串口,程序局部如下:
{
Cdialog::OnInitDialog();//TOD Add extra initialization here
m_comm.SetCommPort(1);//选择串口1
if(! m_comm.GetPortOpen())
m_comm.SetPortOpen(TRUE);//翻开串口1
m_comm.SetSettings(“9600,n,8,1〞); //设置串口参数
m_comm.SetRThreshold(1);
m_comm.SetInputMode(1);//设置二进制模式
return TRUE;
}
除了串口的位置和根本串口参数(数据传输速率9600bps,1位开始位,8位数据位,1位停止位,一位奇偶校验)设置 外,为了实现实时数据采集功能,接受数据的读写要尽可能的快速,那么设置RTHreshold=1即接收缓冲区收到一个字节产生OnComm事件 InputLen=1每次读取一个字节。如果PC上位机在一定时间内不能将数据处理完,接收缓冲区会滞留数据,数据会产生丧失现象,我们必须对接受缓冲区 进行适当的设置。RS-232 的缺陷及改良
由于RS-232标准开发较早,使用的是当时流行的DTL技术,随着技术的进步,越老越显露出其局限。
7.1〕RS-232 的缺陷
7.2〕RS-422/485接口
为弥补其技术缺陷,后来又在其根底
原创力文档


文档评论(0)