amei
驱动牛犊
驱动牛犊
  • 注册日期2002-03-21
  • 最后登录2006-11-10
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1387回复:10

请教串行通讯?

楼主#
更多 发布于:2003-01-22 21:17
我用C做的,先初始化,然后向3f8传送命令,通过com1 口的外接rs232线连接到一个pic,然后我不断检测3fd,如果接受缓冲区准备就绪,我就将数据出,可是运行的时候,没有任何数据返回,但检测到com1是busy的。
我的问题是我这样做有什么不对的地方,还有我怎么才能知道是我的数据没传过去,还是要读的数据没读出来?
lxcomcn
驱动老牛
驱动老牛
  • 注册日期2002-07-31
  • 最后登录2010-12-10
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望43点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-22 21:24
我给你贴的那个程序不是可以吗? :D
[img]http://www.nbuser.com/vb/avatar.php?userid=10792&dateline=1046232652 [/img] 我要作诗!!!
amei
驱动牛犊
驱动牛犊
  • 注册日期2002-03-21
  • 最后登录2006-11-10
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-22 21:26
那是vc的我不动呀,你给我讲讲吧,我用c来写
lxcomcn
驱动老牛
驱动老牛
  • 注册日期2002-07-31
  • 最后登录2010-12-10
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望43点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-22 21:32
不过,我觉得直接检测3f8就行了,没有必要去检测3fd吧?不过我是用汇编写的,没用C写过! :D

[编辑 -  1/22/03 by  lxcomcn]
[img]http://www.nbuser.com/vb/avatar.php?userid=10792&dateline=1046232652 [/img] 我要作诗!!!
lxcomcn
驱动老牛
驱动老牛
  • 注册日期2002-07-31
  • 最后登录2010-12-10
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望43点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-01-22 21:37
那是vc的我不动呀,你给我讲讲吧,我用c来写
我给你的程序不是有注解吗?其实就是引用的MSComm Control控件,MSDN里有解释,如果有问题就给我发Email吧! :D

[编辑 -  1/22/03 by  lxcomcn]
[img]http://www.nbuser.com/vb/avatar.php?userid=10792&dateline=1046232652 [/img] 我要作诗!!!
amei
驱动牛犊
驱动牛犊
  • 注册日期2002-03-21
  • 最后登录2006-11-10
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-01-22 21:47
汇编的也行,我可以看看源码吗,你还保存的吗!
我不是一点不懂vc,我对它可能有一种与生具来的反感,我这个人就是有这个坏毛病
amei
驱动牛犊
驱动牛犊
  • 注册日期2002-03-21
  • 最后登录2006-11-10
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-01-22 21:54
我在读取接受缓冲区时,应该怎么读取呢?直接用对端口的操作进行读取吗?那我也不知道自己读取的是接受缓冲区的哪一部分,我在“系统设置”中将com1口的 fifo缓冲区勾掉了,这部分有问题吗?
blue_wind
驱动中牛
驱动中牛
  • 注册日期2002-11-24
  • 最后登录2006-11-30
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-01-22 22:04
我觉得你对串口的初始化没做好。我以前也是和你一样做的,不过是和c51通信,用rs232是一点问题都没有的。我是对整个串口寄存器全部重新设置,没有用系统设置里的,你试试,那样应该可以的。
好东西大家共享,没必要做从复的劳动! 冒着微软的炮火前进!前进!前进!进!
lxcomcn
驱动老牛
驱动老牛
  • 注册日期2002-07-31
  • 最后登录2010-12-10
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望43点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-01-22 22:09
汇编的也行,我可以看看源码吗,你还保存的吗!
我不是一点不懂vc,我对它可能有一种与生具来的反感,我这个人就是有这个坏毛病
汇编的源码我现在已经没有了,就简单地说说吧。先对3fb初始化,DLAB位置0,设置字长、校验位、停止位,然后,将3fb的DLAB位置1,初始化3f8和3f9,用来设置波特率。哦!对了,刚才我说错了,要用到3fd,对它的THRE位进行判断,循环检测。
[img]http://www.nbuser.com/vb/avatar.php?userid=10792&dateline=1046232652 [/img] 我要作诗!!!
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-01-25 12:26
CreatFile(////.//com1,..,..)打开com1
就可以用WriteFile(hCom,..,...)
       ReadFile()了
当然还要进行必要的设置。
l=z=l 我听说,灌水是使分数快速增长的有效方法
nn_buaa
驱动牛犊
驱动牛犊
  • 注册日期2002-03-04
  • 最后登录2005-06-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-05-07 15:53
请问串口的3f8-3ff寄存器时如何分配的?我查不到,波特率应该如何设置啊?谢谢!
游客

返回顶部