求vb写的pc与单片机串口通信程序(包括单片机串口中断程源码)

jvs 2010-08-20 05:13:02
两区发帖,单片机区也发了……,这个好像属vb,又属于单片机
最近想用vb写单片机与pc机之间的串行通信程序,可是试了好多,看了好多教程,做了来就是不对。

想让大家给点vb写的pc与单片机串口通信的教程,最好是视频的,当然其他的图文教程也可以,有源码的也加上,
我在网上找的很多都不全的,所以调不好,没调过,没有经典,所以想要个完整版的先学起来。
可以发到我邮箱 xia777xia@163.com 非常感谢!!!!

还有vb里的MSComm控件中的有些东西不太理解,看了msdn还是不太理解,比如:

' 9600 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1.Settings = "9600,N,8,1"
他这里如果设置了奇偶校验位的话要怎么写,如果设了奇偶校验位的话pc机上右击我的电脑----属性----硬件----设备管理器里面的COM口是不是也要进行相应的设置?

最后想问一下发数据的时候时序要怎么控制



我现在用的是rs232改的串口线,rxd、txd、gnd三线,硬件应该是没问题的,可是就是调不出来

...全文
2700 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_liang_liang 2011-09-15
  • 打赏
  • 举报
回复
肯定有问题,我编译时不能通过
SANDISKER 2011-08-01
  • 打赏
  • 举报
回复
' 向串口发送信息
Private Sub Command2_Click()
Dim tmpArray() As Byte
tmpArray = StrConv(Text1.Text, vbFromUnicode)
MSComm1.Output = Bytes
End Sub

红色部分有问题不?
caoyuanshenju 2010-12-03
  • 打赏
  • 举报
回复
这个能在visual stidio 2005上用不
jvs 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 guozishen 的回复:]
写得很好很经典啊
[/Quote]
额……
guozishen 2010-11-20
  • 打赏
  • 举报
回复
写得很好很经典啊
jvs 2010-09-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yymhlq 的回复:]
引用 8 楼 xia777xia 的回复:
引用 7 楼 cnuser1 的回复:
请参考资料(资料下载地址):
http://ishare.iask.sina.com.cn/f/8618503.html

Directory of I:\T41Backup\C盘资料备份\EIQSOFT\Visual Basic 串口通信技术与典型实例\Visual Basic\code
1、串口编程……
[/Quote]
我也不知道啊,没调成功
yymhlq 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xia777xia 的回复:]
引用 7 楼 cnuser1 的回复:
请参考资料(资料下载地址):
http://ishare.iask.sina.com.cn/f/8618503.html

Directory of I:\T41Backup\C盘资料备份\EIQSOFT\Visual Basic 串口通信技术与典型实例\Visual Basic\code
1、串口编程调试精灵
2、云台控制系统
3、交通电子拍……
[/Quote]


密码是多少啊????



现在还是人类 2010-08-21
  • 打赏
  • 举报
回复
下位机测试程序

#include <reg52.h>
typedef unsigned char BYTE;
#define RELOAD_COUNT 0xFF //22.1184MHz,12T,SMOD=0,57600bps

void Initialize_Stoppage();
void SendToPort(BYTE Buf);
//入口函数
main()
{
Initialize_Stoppage();
while(1){
}
}
//初始化串口中断,注意频率是57600,晶振用的是 22.1184 M 的
void Initialize_Stoppage()
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TL1 = RELOAD_COUNT;
TH1 = RELOAD_COUNT;
ES = 1;
TR1 = 1;
EA = 1;
}
//串口中断处理过程
void COM_Event () interrupt 4
{
BYTE dat = 0;
if(RI == 1)
{
dat = SBUF;
RI = 0;
//这里是收到什么就发什么出去
SendToPort(dat);
}else{
TI = 0;
}
}
//发送串口信息给上位机函数过程
void SendToPort(BYTE Buf)
{
ES = 0;
TI = 0;
SBUF = Buf;
while(TI == 0);
TI = 0;
ES = 1;
}



上位机VB测试程序

Dim ReadBytes() As Byte, ReadCount As Long
' 连接串口
Private Sub Command1_Click()
'连接串口1
ConnectPort 1
End Sub

' 向串口发送信息
Private Sub Command2_Click()
Dim tmpArray() As Byte
tmpArray = StrConv(Text1.Text, vbFromUnicode)
MSComm1.Output = Bytes
End Sub

' 收到串口信息直接显示出来
Private Sub MSComm1_OnComm()
Dim X As Long
On Error Resume Next
If MSComm1.CommEvent = comEvReceive Then
ReadBytes = MSComm1.Input
ReadCount = UBound(ReadBytes)
For X = 0 To ReadCount
Text2.Text = Text2.Text & " " & String(2 - Len(Hex(ReadBytes(X))), "0") & Hex(ReadBytes(X))
Next X
End If
End Sub

' 连接串口的函数
Private Function ConnectPort(Optional hPort As Integer = 1) As Boolean
On Error Resume Next
MSComm1.PortOpen = False
If Err.Number <> 0 Then
Err.Clear
End If
MSComm1.CommPort = hPort
MSComm1.Settings = "57600,N,8,1"
MSComm1.PortOpen = True
If Err.Number <> 0 Then
Err.Clear
MsgBox "打开端口错误,请您确定.",64,"错误"
Exit Function
End If
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InputMode = comInputModeBinary
End Function
jvs 2010-08-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cnuser1 的回复:]
请参考资料(资料下载地址):
http://ishare.iask.sina.com.cn/f/8618503.html

Directory of I:\T41Backup\C盘资料备份\EIQSOFT\Visual Basic 串口通信技术与典型实例\Visual Basic\code
1、串口编程调试精灵
2、云台控制系统
3、交通电子拍照管理系统
4、发送邮件系统
……
[/Quote]
谢谢,这个我下了,可是看不太懂
cnuser1 2010-08-21
  • 打赏
  • 举报
回复
请参考资料(资料下载地址):
http://ishare.iask.sina.com.cn/f/8618503.html

Directory of I:\T41Backup\C盘资料备份\EIQSOFT\Visual Basic 串口通信技术与典型实例\Visual Basic\code
1、串口编程调试精灵
2、云台控制系统
3、交通电子拍照管理系统
4、发送邮件系统
5、文件传送系统
6、电机驱动监控系统
7、自动报警系统
jvs 2010-08-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ybh37 的回复:]
准备好了之后,先用串口调试工具测试好底层通讯链路、通信逻辑。然后开始编码。
[/Quote]
恩,谢谢
jvs 2010-08-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 veron_04 的回复:]
我个人发表一点个人意见:
1、串口通讯首先的确定上位机和下位机,那么PC作为上位机、单片机作为下位机,这样定位是没有错的。
2、串口通讯属于Modbus通讯,Modbus通讯就的有通信协议,那么首先就的构建自己的串口通讯协议,通常
情况下,串口通讯协议组成结构如下:STX+ADD+CMD+(Data)+CHK+ETX
STX:是串口通讯起始符,通常是一些特殊ASCII字符,比如“:……
[/Quote]
学习了,谢谢
贝隆 2010-08-20
  • 打赏
  • 举报
回复
我个人发表一点个人意见:
1、串口通讯首先的确定上位机和下位机,那么PC作为上位机、单片机作为下位机,这样定位是没有错的。
2、串口通讯属于Modbus通讯,Modbus通讯就的有通信协议,那么首先就的构建自己的串口通讯协议,通常
情况下,串口通讯协议组成结构如下:STX+ADD+CMD+(Data)+CHK+ETX
STX:是串口通讯起始符,通常是一些特殊ASCII字符,比如“:”、“#” 等等,
ADD:下位机地址,如果是485通讯,那么需要设置下位机地址,一般为1~255,如果是232通讯,则不需要
CMD:串口通讯命令,由用户自己定义一个具有特殊含义的字符
Data:可选项,写入下位机时带有,从下位机读数据时不需要
CHK:校验方式,通常有CRC校验,异或校验,累加和校验等
ETX:串口通讯结束符,也是一些特殊的ASCII字符
咸清 2010-08-20
  • 打赏
  • 举报
回复
准备好了之后,先用串口调试工具测试好底层通讯链路、通信逻辑。然后开始编码。
jvs 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chinaboyzyq 的回复:]
首先拿到单片机的通讯协议,这包括它的串口波特率,有无检验,是7位,还是8位数据位,然后还要用单机的控制指令。

然后上网找mscomm设置方法或mscomm使用方法。
[/Quote]
用的是c51
chinaboyzyq 2010-08-20
  • 打赏
  • 举报
回复
首先拿到单片机的通讯协议,这包括它的串口波特率,有无检验,是7位,还是8位数据位,然后还要用单机的控制指令。

然后上网找mscomm设置方法或mscomm使用方法。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧