搜索
bottom↓
回复: 17

Visual Basic 2008 速成版 串口如何使用?

[复制链接]

出0入0汤圆

发表于 2009-3-28 01:13:14 | 显示全部楼层 |阅读模式
如题~~~
    上次进入官方网站想下载VB6.0 MSDN文件的.看到有免费体验版,就下载来学习一下,里面有很多例子,值得学习.
由于以前没学过VB,反正是初学,干脆就学新的算了,但是手上刚买来的书籍都是VB 6.0的,里面的串口实例自然也就无法拿来应用了.

在此请教各位朋友了!!
    如果有像"串口的2-3脚连接就能实现的例子"就更好了~~
                                                          谢谢~~~~

出0入0汤圆

 楼主| 发表于 2009-3-28 03:50:54 | 显示全部楼层
请多多赐教啊~~!~~朋友们~~~!~~~

出0入0汤圆

 楼主| 发表于 2009-3-28 19:53:59 | 显示全部楼层
唉~~昨晚整了一个晚上还是没搞通...今晚仍将继续...

是不是都跑到雕刻机那里去了呀??没人理我的??

出0入162汤圆

发表于 2009-3-28 21:07:35 | 显示全部楼层
vb有2008版吗?

现在都是vb.net的

出0入0汤圆

发表于 2009-3-28 21:10:45 | 显示全部楼层
条件许可的情况下,切勿使用.NET开发工控软件

出0入0汤圆

发表于 2009-3-28 21:30:43 | 显示全部楼层
条件许可的情况下,切勿使用.NET开发工控软件 ? 什么意思?

出0入0汤圆

 楼主| 发表于 2009-3-28 21:56:13 | 显示全部楼层
上官方网站就知道有没有了呀,而且我都已经在用了,不用怀疑!

正因为是免费体验版的,下载来学习也不错呀

出0入0汤圆

发表于 2009-3-30 01:42:45 | 显示全部楼层
visual basic 2008 是vb.net 使用System.IO.Ports.SerialPort 搞定串口, 看看msdn

出0入0汤圆

 楼主| 发表于 2009-3-30 02:40:14 | 显示全部楼层
哈哈~~
  
谢谢 【7楼】 wanmyqawdr  你的回复~~

    System.IO.Ports.SerialPort 在msdm里我也看到了,按着msdm里面提供的例子也试过,发送时能看到板上的LED灯有闪,证明有发送,
但是还没有实现回送到电脑里来显示,应该是我没有搞定接收触发事件来打开串口

今晚还将继续...

出0入0汤圆

发表于 2009-3-30 02:52:37 | 显示全部楼层
订阅DataReceived事件,在事件处理函数里调用ReadExisting()

出0入0汤圆

 楼主| 发表于 2009-3-30 02:58:44 | 显示全部楼层
哦~~好的,非常感谢!!!我立刻试试~~
【9楼】 wanmyqawdr 你真的太可爱了...

出0入0汤圆

 楼主| 发表于 2009-3-30 04:02:29 | 显示全部楼层
哈哈~~再次感谢【9楼】 wanmyqawdr
    还是那句话--->> 你真的太可爱了
成功啦!!!

出0入0汤圆

发表于 2009-3-30 04:15:24 | 显示全部楼层
我刚第一次成功编译linux内核!庆祝下,哈哈

出0入0汤圆

 楼主| 发表于 2009-3-30 04:20:44 | 显示全部楼层
哦~~是吧~~值得庆祝~~~

出0入0汤圆

 楼主| 发表于 2009-3-30 04:25:38 | 显示全部楼层
我现在能发送也能回显了,不过我用的方法应该不对的,因为我不是利用接收触发事件来回显的,是直接发送以后就来个读指令来回显的
Public Class Form1
    Public com1 As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM1")

    Sub SendSerialData(ByVal data As String)
        ' Send strings to a serial port.

        com1.WriteLine(data)
        TextBox1.Text &= com1.ReadLine()

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SendSerialData("ByVal data As String")
    End Sub
End Class

出0入0汤圆

发表于 2009-3-30 04:56:04 | 显示全部楼层
我没用过VB,不过你的思路我明白。你是在发送的同时接受数据,这样做虽然可以,但是有些“另类”了


SerialPort类提供了DataReceived事件,就是串口有数据到来是会触发DataReceived事件,你只要实现一个事件处理函数就行了,把ReadLine()放在事件处理函数里。

MSDN给出了这样的代码

Dim instance As SerialPort  //定义了SerialPort对象
Dim handler As SerialDataReceivedEventHandler     //定义一个事件处理函数

AddHandler instance.DataReceived, handler   //把事件处理函数和DataRecieved事件关联起来

下边要做的就是实现handler,把ReadLine放在handler里

出330入0汤圆

发表于 2009-3-30 10:12:16 | 显示全部楼层
都赶潮流用2008了

出0入0汤圆

 楼主| 发表于 2009-4-26 00:10:52 | 显示全部楼层
Visual Basic 2008 速成版

   学了这么多天,功能感觉很是强大,使用方法跟VB6.0 真的很不一样啊.在网上看了一下2005版本的,差不多,但我没学过2005版本的,

所以不知道有什么改动?在串口中断程序中直接将参数送显不行的,要用"委派"什么的.唉又得去买点书来看看了,不知道有没有2008版本

的?2005版本的又不知道是不是一样用?请老大们指点一下吧...谢谢 ~~~

功夫不负有心人,串口的2-3脚连接就能实现<发送-回显>的功能终于搞出来了.但还是对委派的使用还不是很了解,在这里有没有人能给我

解释一下呀??程序虽然是我写的,但也是这里搬一点那里搬一点,糊里糊涂就能实现了.有没有人帮我注释下每一行的功能的作用呀?

Imports System.IO
Imports System.Threading
Imports Microsoft.VisualBasic
Imports System.Windows.Forms
Imports System.IO.Ports
Imports System.Text

Public Class Form1

    'Dim WithEvents RS232 As SerialPort
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        RS232.Open()
        RS232.ReceivedBytesThreshold = 1
        txtSend.Select()
    End Sub

    Private Sub RS232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived
        If e.EventType <> SerialData.Chars Then Exit Sub
        Dim inData As String = RS232.ReadExisting
        DispalyText(inData)
    End Sub

    Private Sub DatSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DatSend.Click
        RS232.WriteLine(txtSend.Text)
        txtSend.Select()
    End Sub

    Delegate Sub SetTextCallback(ByVal InputString As String)

    Private Sub DispalyText(ByVal comData As String)
        If Me.txtReceive.InvokeRequired Then
            Dim d As New SetTextCallback(AddressOf DispalyText)
            Me.Invoke(d, New Object() {comData})
        Else
            Me.txtReceive.Text = comData
        End If
    End Sub

End Class
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 05:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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