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

求vb写的pc与单片机串口通信程序(包括单片机串口中断程源码)
两区发帖,单片机区也发了……,这个好像属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三线,硬件应该是没问题的,可是就是调不出来



------解决方案--------------------
首先拿到单片机的通讯协议,这包括它的串口波特率,有无检验,是7位,还是8位数据位,然后还要用单机的控制指令。

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

------解决方案--------------------
准备好了之后,先用串口调试工具测试好底层通讯链路、通信逻辑。然后开始编码。
------解决方案--------------------
我个人发表一点个人意见:
1、串口通讯首先的确定上位机和下位机,那么PC作为上位机、单片机作为下位机,这样定位是没有错的。
2、串口通讯属于Modbus通讯,Modbus通讯就的有通信协议,那么首先就的构建自己的串口通讯协议,通常
情况下,串口通讯协议组成结构如下:STX+ADD+CMD+(Data)+CHK+ETX
STX:是串口通讯起始符,通常是一些特殊ASCII字符,比如“:”、“#” 等等,
ADD:下位机地址,如果是485通讯,那么需要设置下位机地址,一般为1~255,如果是232通讯,则不需要
CMD:串口通讯命令,由用户自己定义一个具有特殊含义的字符
Data:可选项,写入下位机时带有,从下位机读数据时不需要
CHK:校验方式,通常有CRC校验,异或校验,累加和校验等
ETX:串口通讯结束符,也是一些特殊的ASCII字符
------解决方案--------------------
请参考资料(资料下载地址):
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、自动报警系统

------解决方案--------------------
下位机测试程序
C/C++ code

#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;
}

------解决方案--------------------
以下是一些相关的入门知识

http://blog.csdn.net/SupermanKing/archive/2010/08/20/5826294.aspx

http://blog.csdn.net/SupermanKing/archive/2010/08/18/5821603.aspx