| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1251 人关注过本帖
标题:新手 关于串口通信的问题
只看楼主 加入收藏
winterlulu
Rank: 1
等 级:新手上路
帖 子:14
专家分:9
注 册:2016-3-29
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
新手 关于串口通信的问题
最近在学习串口通信编程,对于如何访问串口有一些疑惑,想咨询一下各位。

在博客上看到一段文字说“Windows操作系统对系统底层操作采取了屏蔽的策略,禁止应用程序直接访问计算机I/O端口,而由设备驱动程序统一管理,Windows封装了Windows的通信机制,这种方式称为通信应用程序接口API(Application Programming Interfaces)。Windows 9x/NT/2000提供的API一般都支持32位的操作,又称为Win32 API,程序员可以利用Win32 API的通信函数进行编程,不用对硬件直接进行操作,使得应用程序的编制更加方便”。

但是我在另一篇讲“异步串行通信”的文章里看到了inportb(0x3f8)这个函数的使用,也就是说能够返回从指定硬件端口读入的一个8位二进制(一个字节)。

所以我现在有点疑惑,使用VC编程环境,究竟能否直接访问串行口。以及如何获取计算机串口的地址?还是只能用API进行访问?现在有点晕,可以为我解答一下吗?谢谢!
搜索更多相关主题的帖子: Windows 应用程序 程序员 操作系统 通信 
2016-03-30 10:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
用vc怎麽寫都可以,能不能被成功執行是另外一回事。inportb(0x3fb)是直接存取硬件的代碼,是否允許取決於當程序在什麽環境中運行,而不是vc可不可這樣寫。

授人以渔,不授人以鱼。
2016-03-30 10:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
現代Windows操作系統(Win95/98之後的NT内核Windows)是不允許直接存取硬件端口的,vc是一個開發平臺,可以寫任何環境下的程序,它既可以寫DOS/Win95/98下直接存取端口的程序,也可以寫在NT下必須調用API的程序。你看到的資料,是在什麽環境下運行,作者自己有交待,就算沒交待,你知道inportb()是直接從指定端口讀數據就可以了。在單片機中可以這樣寫。

授人以渔,不授人以鱼。
2016-03-30 11:26
winterlulu
Rank: 1
等 级:新手上路
帖 子:14
专家分:9
注 册:2016-3-29
收藏
得分:0 
回复 3楼 TonyDeng
原来是这样子。之前没搞清是什么环境下。现在懂了,谢谢!
2016-03-30 11:56
快速回复:新手 关于串口通信的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033774 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved