注册名:

密码:

个人注册

企业注册

商务申请

商务管理平台

企业管理平台

个人管理平台

我的工控博客

中国工控网www.chinakong.com

首页 | 新闻中心 | 工控论坛 | 经验视点 | 工控商务 | 电气手册 | 工控博客 | 招聘求职 | 网上调查 | 企业中心 | 供求信息 | 资料中心 | 工控书店

所在位置:工控论坛 -- PLC论坛 -- PLC论坛(非专题) -- PLC网络通信

中国工控网搜索:

 自动化企业招聘

更多..

 登陆:密码:  注册  密码

搜索:

发表人:jiechen111 发表时间:2005/1/24 14:57:00  

 

 本栏论题: 十分棘手的串口问题,请高手帮我解决一下  [2569]

    我用vb6。0调用人家写的动态库做了个串口通信的程序,但是我的串口通信程序在Win2000里完全可以用但是到了win98里怎么运行程序就弹出对话框为“无法打开串口”,这是为什么啊?请各位高手指教一下,谢谢!
    VB写的关于串口的程序如下:
    Private Sub StartCom
    Const GENERIC_READ=&H80000000
    Const GENERIC_WRITE=&H40000000
    Const OPEN_EXISTING=3
    Const FILE_ATTRIBUTE_NORMAL=&H80
    Dim SecurityA As SECURITY_ATTRIBUTES
   
   
    Dim Temp(5) As String
    FIleName for inpute Lock Read Write As #1
    on Error Resume Next
    Input #1, temp(0),temp(1),temp(2),temp(3),temp(4)
    Close #1
   
    select case(temp(3))
    Case 0:hCom=CreateFile("COM1",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 1:hCom=CreateFile("COM2",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 2:hCom=CreateFile("COM3",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 3:hCom=CreateFile("COM4",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 4:hCom=CreateFile("COM5",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 5:hCom=CreateFile("COM6",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 6:hCom=CreateFile("COM7",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 7:hCom=CreateFile("COM8",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 8:hCom=CreateFile("COM9",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 9:hCom=CreateFile("COM10",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 10:hCom=CreateFile("COM11",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    Case 11:hCom=CreateFile("COM12",GENERIC_READ OR GENERIC_WRITE,0,SECURITYA,OPEN_EXISTING,FILE_ATTRIZBUTE_NORMAL,0)
    end select
    if hcom=-1 then
    i=MSGBOX("无法打开串口",vbOKONLY,"错误"
    StatusBar1.Panels(1).Text="无法打开串口!"
    else: if iniCom(hcom,Temp(0),8,temp(1),temp(2),Temp(4)=False Then
    i=MsgBOX("串口初始化失败",vbOKONLY,"错误")
    StatusBar1.Panels(1).Text="串口初始化失败!"
    CLoseHandle(hCom)
    else:
    StartCom.Enabled=False
    playCommand.Enabled=False
    stopcom.Enabled=true
    stopcommand.enabled=true
    Combo1.Enabled=True
    searchadd.Enabled=True
    StatusBAR1.Panels(1).Text="串口已成功打开!"
    searchAdd_Click
    end if
    end sub
   
    调用的动态库程序如下:
    extern"C"_declspec(dellexport)BOOL IniCom(HANDLE hCom, long Baurate,short DataBits,short Parity,short StopBits,short TimeOut)
    {
    DCB dcb
    COMMTIMEOUTS CommTime;
    BOOL Error=TRUE;
   
   
    if(hCom==INVALID_HANDLE_value)
    {
    //MessageBox(NULL,"无法打开串口! " ,"故障",MB_IConERROR);
    return FALSE;
    }
    Error=SetupComm(hCom,1024,1024);
    if(!Error)
    {
    //MessageBox(NULL,"设定串口缓冲区时出错! " ,"故障",MB_IConERROR);
    return False;
    }
    GEtCommTimeots(hcom,&CommTimes);
    CommTimes.ReadIntervalTimeout=0x00;//间隔超时(mS);0为不使用
    commTimes.ReadTotalTimeoutMultiplier=0X01;//乘量(mS);总超时=乘量*字节+常量
    commTimes.ReadTotalTimeoutConstant=TimeOut;//OX64;//常量(ms)
    Error=SetcommTimeouts(hCom,&CommTimes);
    if(!Error)
    {
    //MessageBox(NULL,"设定串口读写超时时出错! " ,"故障",MB_IConERROR);
    return FALSE
    }
    Error=GetCommState(hcom,&dcb);
    if (!ERROR)
    {
    //MessageBox(NULL,"读写串口参数时出错! " ,"故障",MB_IConERROR);
    return FALSE
    }
    /********初始化串口参数**********/
    dcb.BaudRate=BaudRate;
    dcb.ByteSize=DataBits;
    dcb.PArity=Parity;
    dcb.StopBits=StopBits;
    /*********结束*******************/
    Error=setCommState(hCom,&dcb);
    if(!ERROR)
    {
    //MessageBox(NULL,"设定串口参数时出错!

以下是关于《十分棘手的串口问题,请高手帮我解决一下》论题的回复(共2篇)

回复人:cn18show 

 回复时间:2009/9/25 20:21:00

支持(528) | 反对(314)

 

    中国行业网站TOP100强,易展过五周岁生日了!特拿出50万回馈客户,快来领取吧,详情:http://www.18show.cn/5/?m=189

回复人:hexianqiu 

 回复时间:2012/8/8 12:39:00

支持(371) | 反对(542)

 

    这么说我连低手都不如,,,,

如果要回复本栏论题,请首先中国工控网www.chinakong.com

·如果你已经是中国工控网www.chinakong.com成员,请直接登录。

·如果你还不是中国工控网www.chinakong.com成员,请首先注册,注册为免费!

注册名:

密  码:

           注册中国工控网www.chinakong.com
           忘记密码

关闭该窗口

关于我们     免责声明     服务项目     广告联系     友情链接     联系方式     意见反馈     设为首页     加入收藏

 ©2023-2025 中国工控网(www.chinakong.com) 版权所有 豫ICP备17046657号

管理员信箱:chinakong98@163.com  服务热线:13525974529

洛阳博德工控自动化技术有限公司

中国    洛阳