佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

12
返回列表 发新帖
楼主: kevy

UART

[复制链接]
 楼主| 发表于 30-11-2006 02:12 AM | 显示全部楼层

回复 #20 pic 的帖子

  1. 可以先知道之前为什么不可以吗?作了什么又可以?
  2. 可以分享过程吗?你的经验对其他网友会有参考价值。
复制代码

其实不算是什么经验,我只是把 MAX232 的 IC 换掉。
因为,我用 scope 查到其中一个 pin 出来的 pulse 是很小。
所以知道了那粒 IC 是不正常的。

还有之前我没有注意我所用的 cable 是 direct cabling 还是 cross cabling。
所以不能正常操作。

至于 VB 来读取资料, 我还没成功。
应该在需要一点时间。
迟些才回来报告。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 2-12-2006 08:06 PM | 显示全部楼层

回复上次的话题

至于 VB 来读取资料, 我还没成功。
应该在需要一点时间。
迟些才回来报告。


我已经做到了!
谢谢 pic 大哥一路教导我!!
这几天应该会忙着交功课。等好了,我会学习怎样用 877A.
希望 pic 大哥 和 各位能指导小弟下一次 877A 的应用。
pic 大哥,真的很感谢你的教导 和谢谢你送给我的 PICCdos.

以下是我基本的 VB code。
Private Sub Command1_Click() 'start timer
    Timer1.Enabled = True
    Command1.Enabled = False
    Command2.Enabled = True
End Sub

Private Sub Command2_Click() 'stop timer
    Timer1.Enabled = False
    Command1.Enabled = True
    Command2.Enabled = False
End Sub

Private Sub Form_Load() 'when project 1st load
    Timer1.Enabled = False
    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.PortOpen = True 'open the COMM port
End Sub

Private Sub Form_Unload(Cancel As Integer)
    MSComm1.PortOpen = False 'close the COMM port
End Sub

Private Sub Timer1_Timer() 'timer event
    Dim ADCValue As String
   
    MSComm1.Output = "Q"
    ADCValue = MSComm1.Input
    Label1.Caption = ADCValue
End Sub
回复

使用道具 举报

 楼主| 发表于 13-12-2006 10:36 AM | 显示全部楼层

不能显示当时的资料

pic 大哥!!
当我 design vb 给 84A 时候。
我发现了一个问题。

第一次 click button 拿资料时, 资料是显示 0 号。
第二次 click button 拿资料时, 资料是显示上一次的资料。
而第三次是拿到第二次的资料。

eg. 第一次的资料是 120, 但是我拿到  0。
第二次 click button 拿资料时, 资料是 120。
这是上一次的资料, 而当时第二次的资料应该是 50。
他不能显示当时的资料。

我用 hyperterminal test 过了 84A。
在hyperterminal 84A没有出现这问题,他是显示当时的资料。
而且开头的第一个资料也没显示 0。

是不是我的 coding 有问题呢?



Private Sub cmdStart_Click() 'GET DATA
    Dim ADCValue As String
    Dim SolarValue As Double
   
    MSComm1.Output = "Q"
    X = MSComm1.Input
    Z = (Val(X) * 4.4)
    lblDisplay.Caption = Z
End Sub

Private Sub cmdStop_Click() 'stop timer
    lblDisplay.Caption = ""
    cmdStart.Enabled = True
    cmdStop.Enabled = False
End Sub

Private Sub Form_Load() 'when project 1st load
    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.PortOpen = True 'open the COMM port
End Sub

Private Sub Form_Unload(Cancel As Integer)
    MSComm1.PortOpen = False 'close the COMM port
End Sub


pic 大哥,我要怎么处理呢?
可以指点指点我吗?

p/S当初还以为自己成功了。正是害羞呢...
回复

使用道具 举报

发表于 13-12-2006 04:01 PM | 显示全部楼层
原帖由 kevy 于 13-12-2006 10:36 AM 发表
pic 大哥!!
当我 design vb 给 84A 时候。
我发现了一个问题。

第一次 click button 拿资料时, 资料是显示 0 号。
第二次 click button 拿资料时, 资料是显示上一次的资料。
而第三次是拿到第二次的资 ...


这是因为你送完request 后,需要等一下,可能10ms~100ms, 让16F84a有时间处理你的request, 再return data 回PC。
Delay可以用Sleep。

加在第一行。
' For Sleep command
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    MSComm1.Output = "Q"
    call sleep(100)’delay 100ms
    X = MSComm1.Input
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2024 05:52 PM , Processed in 0.152152 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表