4589|9

98

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

vb.net 2003 开发智能设备 如何实现串口通讯,有什么控件吗?如用API如何处理?多谢! [复制链接]

采用vb.net 2003开发智能设备ARM2410,关于串口通讯有什么办法?因为PC的MSCOMM32.ocx不可用,evc的通讯源码我有,而且试验可行,如果用api是否可以呢?多谢!

最新回复

后来通过调试发现对于VB2003来说使用API函数有几点麻烦,数据类型的转换,evc: DWORD为unsigned long, VB2003无此类型 它的long属于 signed long,vb2005新增加了ULong和串口控件,我的方向选错了,VB中类似C的指针其实是采用Byref 可以变通使用, 对于热心的网友们表示感谢!  详情 回复 发表于 2008-7-1 11:47
点赞 关注

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
朋友们得回答啊!自己up
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
用流文件读写方式,
bHandle = CreatFile(_T("COM3:", ....)); // 具体参数记不得了,都是通用型参数的。
然后就可以
Open Write Read以及最常用的IoControl...
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
只记得在EVB3时,MSCOMM这个控件可以用,以后再也没有用过VB,所以不清楚现在能不能用。

建议用WIN32 API进行操作,这个移植性好很多。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

5
 
啊?是vb.net?搞错了,sorry,一直以为做智能设备的都用c++或者M$的C#呢。。。VB没用过。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
感谢各位的回答.我估计需要API的方法,我曾经使用过下面的办法,仿照EVC来解决VB.NET2003,下载到目标电路上,出现运行错误:可能的话再给点提示,多谢!

一个托管的NOTSupportedException发生在FORM1::FORM1_load+0x3e
.....
"确定"将终止 .下面是我增加的相关的代码,可以部署完成.

    Public Declare Function CreateFile Lib "coredll.lib" (ByVal lpFileName As String, _
    ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As Long, _
    ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _
    ByVal hTemplateFile As Integer) As Integer

    Public Declare Function SetCommState Lib "coredll.lib" (ByVal hCommDev As Integer, ByRef lpDCB As Long) As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles base.Load

        Dim j As Integer

        j = CreateFile("COM1:", &HC0000000, 0, 0, 3, 0, 0)

        TextBox4.Text = j

        i = 20


    End Sub
'------------------------------------------------------------------------

下面为EVC的函数原形,请帮检查一下哪里有"移植错误":
WINBASEAPI HANDLE WINAPI CreateFileW(
    LPCWSTR lpFileName,
    DWORD dwDesiredAccess,
    DWORD dwShareMode,
    LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    DWORD dwCreationDisposition,
    DWORD dwFlagsAndAttributes,
    HANDLE hTemplateFile
    );

//下面为实际使用代码
void CommInit(CString IndexText,unsigned long Baudrate)
{
                DCB dcb;

                hSer = CreateFile( IndexText, GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING, 0, NULL );
                if( hSer == INVALID_HANDLE_VALUE )
                        {
                        pm_Status->SetWindowText(TEXT("Cannot Open COM!"));
                        return;
                        }

 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
CreateFile("COM1:", &HC0000000, 0, 0, 3, 0, 0)
这是典型的c++代码,别的不说,VB里面肯定没有&这个操作符,因为Basic是不支持指针的。
看MSDN,有没有CreateFile这个函数及对应的操作说明?如果有,就按照规定的格式去写这个函数调用。如果没有,另想办法。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
&H10=16 &H结合起来表示十六进制数,这个没什么问题的,msdn只有EVC的解释,没有VB的,请大家再讨论一下吧.谢谢!
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

9
 
那说明VB里面没有这样的用法的。
这样对流文件的操作,必然涉及到流文件的句柄(HANDLE),其实就是指针,而Basic是没有指针的。
所以,还是用C++写个dll,然后你的VB来调用吧。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

10
 
后来通过调试发现对于VB2003来说使用API函数有几点麻烦,数据类型的转换,evc: DWORD为unsigned long, VB2003无此类型 它的long属于 signed long,vb2005新增加了ULong和串口控件,我的方向选错了,VB中类似C的指针其实是采用Byref 可以变通使用, 对于热心的网友们表示感谢!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表