PICマイコンを使って測定ツールを作ってみよう(3) ―― Visual BasicでPICマイコンを制御する

中西 紫朗

tag: 組み込み 電子回路

エレキ系DIY 2011年5月25日

 

リスト3 VBのコード(MMRS485.frm)

VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
   Caption         =   "MMRS485"
   ClientHeight    =   6645
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   8115
   LinkTopic       =   "Form1"
   ScaleHeight     =   6645
   ScaleWidth      =   8115
   StartUpPosition =   3  'Windows の既定値
   Begin VB.TextBox Text10
      Height          =   270
      Left            =   2160
      TabIndex        =   26
      Text            =   "9"
      Top             =   600
      Width           =   495
   End
   Begin MSCommLib.MSComm MSComm1
      Left            =   6360
      Top             =   240
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
      RThreshold      =   1
   End
   Begin VB.Frame Frame4
      Caption         =   "スレーブ#3"
      Height          =   2535
      Left            =   4200
      TabIndex        =   4
      Top             =   3720
      Width           =   3735
      Begin VB.TextBox Text9
         Height          =   1455
         Left            =   240
         TabIndex        =   24
         Text            =   "応答メッセージ"
         Top             =   840
         Width           =   3255
      End
      Begin VB.TextBox Text4
         Height          =   270
         Left            =   480
         TabIndex        =   12
         Text            =   "Text1"
         Top             =   360
         Width           =   495
      End
      Begin VB.Label Label5
         Caption         =   "ID"
         Height          =   255
         Left            =   120
         TabIndex        =   11
         Top             =   360
         Width           =   255
      End
   End
   Begin VB.Frame Frame3
      Caption         =   "スレーブ#2"
      Height          =   2655
      Left            =   600
      TabIndex        =   3
      Top             =   3600
      Width           =   3375
      Begin VB.TextBox Text8
         Height          =   1575
         Left            =   120
         TabIndex        =   23
         Text            =   "応答メッセージ"
         Top             =   840
         Width           =   3015
      End
      Begin VB.TextBox Text3
         Height          =   270
         Left            =   480
         TabIndex        =   10
         Text            =   "Text1"
         Top             =   360
         Width           =   495
      End
      Begin VB.Label Label4
         Caption         =   "ID"
         Height          =   255
         Left            =   120
         TabIndex        =   9
         Top             =   360
         Width           =   255
      End
   End
   Begin VB.Frame Frame2
      Caption         =   "スレーブ#1"
      Height          =   2415
      Left            =   4200
      TabIndex        =   2
      Top             =   960
      Width           =   3735
      Begin VB.TextBox Text7
         Height          =   1335
         Left            =   240
         TabIndex        =   22
         Text            =   "応答メッセージ"
         Top             =   840
         Width           =   3255
      End
      Begin VB.TextBox Text2
         Height          =   270
         Left            =   480
         TabIndex        =   8
         Text            =   "Text1"
         Top             =   240
         Width           =   495
      End
      Begin VB.Label Label3
         Caption         =   "ID"
         Height          =   255
         Left            =   120
         TabIndex        =   7
         Top             =   240
         Width           =   255
      End
   End
   Begin VB.Frame Frame1
      Caption         =   "マスタ"
      Height          =   2535
      Left            =   600
      TabIndex        =   1
      Top             =   840
      Width           =   3375
      Begin VB.TextBox Text11
         Height          =   270
         Left            =   1200
         TabIndex        =   27
         Text            =   "応答メッセージ"
         Top             =   1080
         Width           =   1935
      End
      Begin VB.TextBox Text6
         Height          =   270
         Left            =   1200
         TabIndex        =   21
         Text            =   "WRITE DATA"
         Top             =   2040
         Width           =   1935
      End
      Begin VB.TextBox Text5
         Height          =   270
         Left            =   1200
         TabIndex        =   20
         Text            =   "READ DATA"
         Top             =   1560
         Width           =   1935
      End
      Begin VB.OptionButton Option4
         Caption         =   "WRITE"
         Height          =   255
         Left            =   120
         TabIndex        =   19
         Top             =   1920
         Width           =   975
      End
      Begin VB.OptionButton Option3
         Caption         =   "READ"
         Height          =   255
         Left            =   120
         TabIndex        =   18
         Top             =   1560
         Width           =   975
      End
      Begin VB.OptionButton Option2
         Caption         =   "RESET"
         Height          =   375
         Left            =   120
         TabIndex        =   17
         Top             =   1080
         Width           =   1215
      End
      Begin VB.OptionButton Option1
         Caption         =   "PING"
         Height          =   255
         Left            =   120
         TabIndex        =   16
         Top             =   720
         Width           =   855
      End
      Begin VB.CommandButton Command1
         Caption         =   "発行"
         Height          =   375
         Left            =   1080
         TabIndex        =   15
         Top             =   600
         Width           =   615
      End
      Begin VB.ComboBox Combo1
         Height          =   300
         Left            =   1920
         TabIndex        =   14
         Text            =   "SLAVE ADDRESS"
         Top             =   240
         Width           =   1335
      End
      Begin VB.TextBox Text1
         Height          =   270
         Left            =   480
         TabIndex        =   6
         Text            =   "Text1"
         Top             =   240
         Width           =   495
      End
      Begin VB.Label Label6
         Caption         =   "送信先"
         Height          =   255
         Left            =   1200
         TabIndex        =   13
         Top             =   240
         Width           =   615
      End
      Begin VB.Label Label1
         Caption         =   "ID"
         Height          =   255
         Left            =   120
         TabIndex        =   5
         Top             =   240
         Width           =   255
      End
   End
   Begin VB.Label Label7
      Caption         =   "COMポート番号"
      Height          =   255
      Left            =   600
      TabIndex        =   25
      Top             =   600
      Width           =   1455
   End
   Begin VB.Label Label2
      Caption         =   "マルチモニタRS485ネットワーク"
      BeginProperty Font
         Name            =   "MS Pゴシック"
         Size            =   15.75
         Charset         =   128
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   375
      Left            =   1440
      TabIndex        =   0
      Top             =   120
      Width           =   4215
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
   Dim ComPortNum As Integer
   Dim NameDD$(3, 4)
   Dim SW(3), SA(4)
   Dim inbuf() As Byte
   Dim MA, ID As Integer
  


Private Sub Command1_Click()
'発行
 
  If checkID(ID) Then
    If Option1.Value Then
       CMND = &HC1 ' PING
    ElseIf Option2.Value Then
       CMND = &HC2 ' RESET
    ElseIf Option3.Value Then
       CMND = &HC3 ' READ
    ElseIf Option4.Value Then
       CMND = &HC4 ' WRITE
    Else
      Text11.Text = "コマンドエラー"
      Exit Sub
    End If
    MSG$ = Text6.Text
    MSComm1.Output = CMND + ID + Len(MSG$) + MSG$
  Else
    Text11.Text = "送信先エラー"
  End If
End Sub

Private Sub Form_Load()
 SA(1) = 1
 SA(2) = 2
 SA(3) = 3
 MA = 10
 ID = 0
 Combo1.AddItem "スレーブ#1"
 Combo1.AddItem "スレーブ#2"
 Combo1.AddItem "スレーブ#3"
 Text1.Text = Str(MA)
 Text2.Text = Str(SA(1))
 Text3.Text = Str(SA(2))
 Text4.Text = Str(SA(3))

On Error GoTo ErrorHandler
   ComPortNum = 9
   Text10.Text = Str(ComPortNum)
'   VScroll1.Value = 16 - ComPortNum
   MSComm1.CommPort = ComPortNum
   MSComm1.Settings = "38400,N,8,1"
   MSComm1.PortOpen = True
   stage = 1
   MSComm1.Output = "C"
Exit Sub
ErrorHandler:
   If Err.Number = 8002 Then

     MSG = "通信ポートが開かれていません。通信ポートを接続して下さい。"
     MsgBox MSG
   ElseIf Err.Number = 0 Then
     MSG = "通信エラーです。"
     MsgBox MSG
   Else
     MSG = "原因不明のエラーです。エラー番号" + Str(Err.Number)
    
     MsgBox MSG
   End If
End Sub

 

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent > 1000 Then
    LenInBuf = MSComm1.InBufferCount
    inbuf = MSComm1.Input
    MSComm1.InBufferCount = 0
    Text7.Text = inbuf
    Exit Sub
End If
If MSComm1.CommEvent = comEvReceive Then
   keyPressed = False
   If MSComm1.InBufferCount >= 1 Then
    LenInBuf = MSComm1.InBufferCount
'    Label11.Caption = Str(LenInBuf)
   
    inbuf = MSComm1.Input
    Text11.Text = inbuf
    ID = inbuf(1)
    inbuf(1) = inbuf(1) + &H30
    If ID = SA(1) Then
      Text7.Text = inbuf
    ElseIf ID = SA(2) Then
      Text8.Text = inbuf
    ElseIf ID = SA(3) Then
      Text9.Text = inbuf
     End If
   End If
End If
End Sub
Private Function checkID(ID As Integer) As Boolean

   If ID = MA Then
     checkID = True
     ElseIf ID = SA(1) Then
       checkID = True
     ElseIf ID = SA(2) Then
       checkID = True
     ElseIf ID = SA(3) Then
       checkID = True
     Else
       checkID = False
    End If
    
    
    
End Function

 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日