zhuisuoji 发表于 2009-3-28 01:13:14

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

如题~~~
    上次进入官方网站想下载VB6.0 MSDN文件的.看到有免费体验版,就下载来学习一下,里面有很多例子,值得学习.
由于以前没学过VB,反正是初学,干脆就学新的算了,但是手上刚买来的书籍都是VB 6.0的,里面的串口实例自然也就无法拿来应用了.

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

zhuisuoji 发表于 2009-3-28 03:50:54

请多多赐教啊~~!~~朋友们~~~!~~~

zhuisuoji 发表于 2009-3-28 19:53:59

唉~~昨晚整了一个晚上还是没搞通...今晚仍将继续...

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

AWEN2000 发表于 2009-3-28 21:07:35

vb有2008版吗?

现在都是vb.net的

lysoft 发表于 2009-3-28 21:10:45

条件许可的情况下,切勿使用.NET开发工控软件

zzsoft 发表于 2009-3-28 21:30:43

条件许可的情况下,切勿使用.NET开发工控软件 ? 什么意思?

zhuisuoji 发表于 2009-3-28 21:56:13

上官方网站就知道有没有了呀,而且我都已经在用了,不用怀疑!

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

wanmyqawdr 发表于 2009-3-30 01:42:45

visual basic 2008 是vb.net 使用System.IO.Ports.SerialPort 搞定串口, 看看msdn

zhuisuoji 发表于 2009-3-30 02:40:14

哈哈~~

谢谢 【7楼】 wanmyqawdr你的回复~~

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

今晚还将继续...

wanmyqawdr 发表于 2009-3-30 02:52:37

订阅DataReceived事件,在事件处理函数里调用ReadExisting()

zhuisuoji 发表于 2009-3-30 02:58:44

哦~~好的,非常感谢!!!我立刻试试~~
【9楼】 wanmyqawdr 你真的太可爱了...

zhuisuoji 发表于 2009-3-30 04:02:29

哈哈~~再次感谢【9楼】 wanmyqawdr
    还是那句话--->> 你真的太可爱了
成功啦!!!./emotion/em100.gif

wanmyqawdr 发表于 2009-3-30 04:15:24

我刚第一次成功编译linux内核!庆祝下,哈哈

zhuisuoji 发表于 2009-3-30 04:20:44

哦~~是吧~~值得庆祝~~~

zhuisuoji 发表于 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

wanmyqawdr 发表于 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里

zcllom 发表于 2009-3-30 10:12:16

都赶潮流用2008了

zhuisuoji 发表于 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
页: [1]
查看完整版本: Visual Basic 2008 速成版 串口如何使用?