■ VB2005のシリアル通信で
ネギ4本
2008/02/17(日) 18:52:12 <初心者> 
シリアル通信で制御しようと
Public Class RS232CForm
Dim ADRS As Integer '後で書き付け足した場所
Dim DT As Integer '後で書き付け足した場所
Private Sub RS232CForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With ComSerialPort
.PortName = "COM4" ' 通信ポートはCOM4
.BaudRate = 4800 ' 通信速度は9600bps
.DataBits = 8 ' データ長は8ビット
.Parity = IO.Ports.Parity.Even ' パリティチェックなし
.StopBits = IO.Ports.StopBits.One ' ストップビットは1
' ハードウェアによるハンドシェイク
.Handshake = IO.Ports.Handshake.None
.RtsEnable = True ' RTSラインを有効にする
End With
End Sub
Private Sub ConnectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnectButton.Click
Try
' 通信ポートが開いているかどうかの判定
If ComSerialPort.IsOpen = False Then
' 通信ポートを開く場合の処理
ComSerialPort.Open() ' 通信ポートを開く
ConnectButton.Text = "通信停止"
Else
' 通信ポートを切断する場合の処理
ComSerialPort.Close() ' 通信ポートを切断
ConnectButton.Text = "通信開始"
End If
Catch ex As Exception
' 通信ポートの接続・切断時のエラー処理
MessageBox.Show(ex.Message, "接続エラー", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub SendButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SendButton.Click
' 通信ポートが開いているかどうかの判定
If ComSerialPort.IsOpen Then
Try
' データの送信
ADRS = &H80 Or &H7 '後で書き付け足した場所
ComSerialPort.WriteLine(ADRS)
Catch ex As Exception
' 送信エラー時の処理
MessageBox.Show(ex.Message, "送信エラー", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
MessageBox.Show("通信が開始されていません", "送信エラー", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Sub
' デリゲート型の宣言
Delegate Sub RecieveDataDelegate(ByVal RecieveData As String)
' デリゲート型のプロシージャを宣言
Private Sub SetRecieveData(ByVal DataString As String)
RecieveDataTextBox.Text &= DataString
End Sub
' SerialPortコントロールのDataReceivedイベントハンドラ
Private Sub ComSerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles ComSerialPort.DataReceived
Dim RecieveData As String
' デリゲート型の変数の宣言と生成
Dim recieve As New RecieveDataDelegate(AddressOf SetRecieveData)
Try
' データの受信
Dim D1 As Integer
DT = &H10 Or D1
D1 = 0
RecieveData = ComSerialPort.ReadLine
Catch ex As Exception
' 受信エラー時の処理
RecieveData = ex.Message
End Try
'デリゲート型のプロシージャを呼び出す
Invoke(recieve, RecieveData)
End Sub
End Class
っというコードをかきました。
送信ができているんですが何も表示されません。
どういうふうにしたら表示できるかご教授を願いします。
自分ではもうわかりません
我龍院
2008/02/18(月) 08:07:26
>.Parity = IO.Ports.Parity.Even ' パリティチェックなし
パリティが偶数になっていますが。(^^;
ネギ4本
2008/02/18(月) 16:21:57 <初心者> 
ありがとうございます。
Public Class RS232CForm
Dim ADRS As Integer '後で書き付け足した場所
Dim DT As Integer '後で書き付け足した場所
Private Sub RS232CForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With ComSerialPort
.PortName = "COM4" ' 通信ポートはCOM4
.BaudRate = 4800 ' 通信速度は4800bps
.DataBits = 8 ' データ長は8ビット
.Parity = IO.Ports.Parity.None ' パリティチェック偶数
.StopBits = IO.Ports.StopBits.One ' ストップビットは1
' ハードウェアによるハンドシェイク
.Handshake = IO.Ports.Handshake.None
.RtsEnable = True ' RTSラインを有効にする
End With
End Sub
Private Sub ConnectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnectButton.Click
Try
' 通信ポートが開いているかどうかの判定
If ComSerialPort.IsOpen = False Then
' 通信ポートを開く場合の処理
ComSerialPort.Open() ' 通信ポートを開く
ConnectButton.Text = "通信停止"
Else
' 通信ポートを切断する場合の処理
ComSerialPort.Close() ' 通信ポートを切断
ConnectButton.Text = "通信開始"
End If
Catch ex As Exception
' 通信ポートの接続・切断時のエラー処理
MessageBox.Show(ex.Message, "接続エラー", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub SendButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SendButton.Click
' 通信ポートが開いているかどうかの判定
If ComSerialPort.IsOpen Then
Try
' データの送信
ADRS = &H80 Or &H7 '後で書き付け足した場所
ComSerialPort.WriteLine(ADRS)
Catch ex As Exception
' 送信エラー時の処理
MessageBox.Show(ex.Message, "送信エラー", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
MessageBox.Show("通信が開始されていません", "送信エラー", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Sub
' デリゲート型の宣言
Delegate Sub RecieveDataDelegate(ByVal RecieveData As String)
' デリゲート型のプロシージャを宣言
Private Sub SetRecieveData(ByVal DataString As String)
RecieveDataTextBox.Text &= DataString '受信したデータをtextboxに書き込む
End Sub
' SerialPortコントロールのDataReceivedイベントハンドラ
Private Sub ComSerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles ComSerialPort.DataReceived
Dim RecieveData As String
' デリゲート型の変数の宣言と生成
Dim recieve As New RecieveDataDelegate(AddressOf SetRecieveData)
Try
' データの受信
Dim D1 As Integer
DT = &H10 Or D1
D1 = 0
RecieveData = ComSerialPort.ReadLine
Catch ex As Exception
' 受信エラー時の処理
RecieveData = ex.Message
End Try
'デリゲート型のプロシージャを呼び出す
Invoke(recieve, RecieveData)
End Sub
End Class
USB-RSAQ5をつかってブルーボックスとシリアル通信をしようとしています。
まだできません。どなたかご教授お願いします。
うに
2008/02/18(月) 17:50:53
Visual Basic 掲示板
でVISTAでUSB-RSAQ5が使えなくてメーカーに連絡して
最新ドライバをもらったという話がありました。
もしOSがVISTAなら一度確認してみては?
気になったところ
相手に送信するコマンドならば
ADRS = Chr(&H80) & Chr(&H7)
ではないですか?
PC -> &h80 &h07
BLUEBOX -> &h06
とかそういうプロトコルでは?
送信に制御コード使っているのであれば
受信にも含まれているでしょうから表示可能な
文字に変換してからでないと正しく表示できないと
思います。
#ところでブルーボックスとは何をする機器でしょうか?
#型番とかはありませんか?(Googleで調べられませんでした)
毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!
