已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用C操作IO端口1用并口控制发光二极管作者: Levent S. 翻译:Aweay为什么要写这篇文章,不可否认,用C#编写这类程序不是非常合适的, 相信来CSDN的很多朋友都能用其他语言轻松编写这样的程序, 不过如果有一天你的.net的项目里有这样的需求, 那么这篇文章或许就适合你了.什么是端口?端口包含了一系列信号线, 通过这个端口CPU可以同其他外部设备交换数据, 比如我们经常见到的Modem,打印机等通常情况下, 打开的信号是”1”, 关闭的信号是”0”. 并口在同一时间内可以发送8位的数据, 接收5位的数据. 而串口RS-232则只能发送1位数据, 但串口是多向的, 所以在同一时刻既可以发送也可以接收.什么是RS-232 RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。 1 2 3 4 5 / 6 7 8 9 /从计算机连出的线的截面。RS-232针脚的功能:数据:TXD(pin 3):串口数据输出RXD(pin 2):串口数据输入握手:RTS(pin 7):发送数据请求CTS(pin 8):清除发送DSR(pin 6):数据发送就绪DCD(pin 1):数据载波检测DTR(pin 4):数据终端就绪地线:GND(pin 5):地线其他RI(pin 9):铃声指示RS232 通讯原理 ? RS485通讯原理? RS-232是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。 备注:以上是官方的专业描述, 看不懂没有关系,大致有个印象就可以了,有兴趣的可以上网可以买一些专业书籍做深入研究,我再用通俗的语言补充描述一下。RS232通讯的基础知识:RS232通讯又叫串口通讯方式。是指计算机通过RS232国际标准协议用串口连接线和单台设备(控制器)进行通讯的方式。通讯距离:9600波特率下建议在13米以内。通讯速率(波特率 Baud Rate):缺省常用的是 9600 bps,常见的还有 1200 2400 4800 19200 38400等。波特率越大,传输速度越快,但稳定的传输距离越短,抗干扰能力越差。 备注:一般台式机会自带1-2个串口插座(公头 (9针插头上带针的俗称公头,带针孔的俗称母头),现在的笔记本一般不带串口插座,可以购买 USB串口转换器,具体请参考 怎样使用USB串口转换器?公头 接线端子排序图母头 接线端子排序图一般只用 2 3 5 号三根线。2 RxD Receive Data ,Input 3 TxD Transmit Data ,Output5 GND Ground 串口连接线: 一般标配是3米以内。RS485通讯的基本知识:RS485和RS232的基本的通讯机理是一致的,他的优点在于弥补了RS232 通讯距离短,不能进行多台设备同时进行联网管理的缺点。计算机通过 RS232 RS485转换器,依次连接 多台 485设备(门禁控制器),采用轮询的方式,对总线上的设备轮流进行通讯。 接线标示是 485+ 485- ,分别对应链接设备(控制器)的 485+ 485-。通讯距离:最远的设备(控制器)到计算机的连线理论上的距离是1200米,建议客户控制在800米以内,能控制在300米以内效果最好。如果距离超长,可以选购 485中继器(延长器)(请向专业的转换器生产公司购买,中继器的放置位置是在总线中间还是开始,请参考相关厂家的说明书。)选购中继器理论上可以延长到 3000米。负载数量:即一条485总线可以带多少台设备(控制器),这个取决于 控制器的通讯芯片和485转换器的通讯芯片的选型,一般有 32台,64台,128台,256台几种选择,这个是理论的数字,实际应用时,根据现场环境,通讯距离等因素,负载数量达不到指标数。微耕公司控制器和转换器按256台设计,实际建议客户每条总线控制在80台以内。如果有几百上千台控制器,请采用 多串口卡 或者 485HUB来解决,具体 请参考“如果系统控制器数成百上千台,如何组网?”坚决禁止使用无源485转换器,具体请参考“为什么禁止使用无源485转换器?”485通讯总线(必须用双绞线,或者网线的其中一组),如果用普通的电线(没有双绞)干扰将非常大,通讯不畅,甚至通讯不上。每台控制器设备必须手牵手地串下去,不可以有星型连接或者分叉。如果有星型连接或者分叉,干扰将非常大,通讯不畅,甚至通讯不上。以下是常见的错误的连接方式:RS422通讯基础知识:他的通讯原理和RS485类似,区别在于他的总线是两组双绞线(4根线),分别标示为 R+ R- T+ T- .缺点是布线成本高,容易搞错。现在用得比较少了,这里就不详细介绍了。并口D0-D7为数据线, S0-S7为状态线, 但是S0,S1,S2是看不见的(从图中你也可以看出), 状态线是用来读取数据的, 但S0却不同, 它是超时标志位, 其他的状态线从第10-11-12-13-15针是用来发送数据的(可以看出是5位). 那么我们怎么能得到这些数据端口呢? 很简单: 每一个并口都有一个地址. 在Windows2000中, 你可以在打印机端口(LPT1)的属性中看到他们. 比如:我的是0378-037F, 如果是10进制, 那么就是888. 同样你也可以看到你的COM端口的地址. 让我以打印机为例解释一下这些针位的意义:l S0: 在EPP(增强的串口)模式下, 如果超时的话, 这位置1.l S1: 没用(估计是装饰).l S2: 大多数情况下没有使用.l S3: 如果打印机发生了错误则置0. 它通常被叫做nError或者nFault.l S4: 如果数据达到, 则置1.我们通常叫做Select.l S5: 如果没有打印纸了则置1.通常叫做PaperEnd或者PaperEmpty或者PError.l S6: 如果打印机得到了一个字节的数据则此位置0, 通常叫做nAck或者nAcknowledge.l S7: 如果打印机处于繁忙的状态则此位置0, 通常叫做Busy.控制线:这些线通常用来输出,但有时也可以用于输入. 他们占用C0-C7(如图), 但是在接口上C4, C5, C6, C7是不可见, 他们占用的端口地址是0x37A.l C0: 这一针脚是保留的. 他发送命令去读取端口上的数据(D0-D7). 当计算机启动的时候,这一位被置1,通常叫做nStrobe.l C1: 保留.通过他发送命令给打印机, 可以得到下一条打印线.(LF)l C2: 重置打印机并且清空数据缓冲区.(nInitialize)l C3: 保留.置高电平打开数据输入.启动计算机时置0.(nSelectIn)地线:从G0-G7的针是接地用的, 他们一般是用来完善电路的.综上所述,在我的应用程序里使用数据线而不是具有保留位的控制线或者状态线作为数据传输。原因显而易见:我们可以发送任何数据到数据线上,比如00000000,这样8根针就没有任何电压(0伏特);当然也可以发送11111111(255),这样每根针都有5伏特的电压。但是如果我们使用控制线,他有C0,C1和C3是保留,当我们发送0000000的时候,他却只能是0100,所以这样数据就不正确了。信号数据位针脚方向-Strobe C0 1Output +Data Bit 0D0 2Output +Data Bit 1D1 3Output+Data Bit 2D2 4Output+Data Bit 3D3 5Output+Data Bit 4D4 6Output+Data Bit 5D5 7Output+Data Bit 6D6 8Output+Data Bit 7D7 9Output-Acknowledge S6 10Input+Busy S7 11Input+Paper End S512Input+Select In S413Input-Auto Feed C114Output-Error S3 15Input-Initialize C2 16Output-Select C3 17OutputGround - 18-25 Ground电路下面的电路图说明了我们的电路如何工作:下面的图片是从不同角度拍摄的,说明了最终完成电路的样子:我们再来看看到底都需要一些什么:l 1-2米的并口电缆(3米也是可以的,不过这样电压将降低到4.7V)l 9芯的电缆(8根用于连接二极管,1根用于接地)l 一个电路实验板(图中白色的东西)l 8个发光二极管l 万用表(不是必要)l 我的程序, 使得你的电路可以工作J这里省略了原著中关于数制转换的介绍, 相信能看这篇文章的这都是小意思. 编码在编码之前, 你应该先确定一下你的OS. 如果你使用Win98, 你可以通过”outputb”函数访问端口. 当你升级到Win2000后, 使用这个函数就不行了.在WinNT, Win2K, WinXP下是不能直接访问端口的. 在我的程序中使用inpout32.dll来访问端口, 在这个地址有这个Dll的源代码.注意: 我是使用这个地址( )的应用信息来导入函数的, 你访问的时候这个信息可能已经更新了. 在我的PortInterop.cs文件中, 我如下使用这个DLLusing System;using System.Runtime.InteropServices;public class PortAccess DllImport(inpout32.dll, EntryPoint=Out32) public static extern void Output(int adress, int value);这个函数携带2个参数,一个是地址,一个是数据. 如果向LPT1发送数据, 那么就设置地址参数为888(16进制为0x378), 如果是LPT2, 那么就是0x278, 比如:PortAccess.Output(888, 255); 发送空数据就是这样:PortAccess.Output(888, 0); 呵呵, 如果是使用TruboC+就是这样:#include #include / For _out#define port 0x378 / Port Address#define data port+0 / Data Port of the parallel cablevoid main (void) _out(data, 255);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商标公司合伙协议书
- 播放凉凉协议书
- 什么是反恐协议书
- 自动驾驶can协议书
- 协议书转换器原理
- 芝麻供种回收协议书
- 人行mq交互协议书
- 2025年量子计算在遗传学中的应用考核试卷
- 2025年旅游气象服务应用考核试卷
- 工业废水处理污泥减量化与资源化技术考核试卷
- 迈瑞心电监护仪使用流程
- 2025中国家庭教育服务行业发展现状及未来趋势报告
- 全国一等奖高一语文统编版必修下册《青蒿素:人类征服疾病的一小步》公开课精讲课件
- 2025年无线电广播接收设备行业分析报告及未来发展趋势预测
- 2025年小学五年级语文上学期期中综合测试试卷(含答案)
- 2025年脉石英行业分析报告及未来发展趋势预测
- 2025年汽车救援行业分析报告及未来发展趋势预测
- 雨课堂在线学堂《大唐兴衰》作业单元考核答案
- 无人机教学平台建设方案
- 2025年政治理论时政热点知识试题库(+答案)
- 江苏省徐州市云龙区2024-2025学年六年级上学期语文期中试卷(含答案)
评论
0/150
提交评论