タイトル : シリアル通信の割込み禁止 投稿日 : 2009/10/18(Sun) 23:46 投稿者 : synt
お世話になります。 VB初心者ですがVB2005でマイコン基板とのシリアル通信ソフトを作成しております。 ネット情報や参考書を頼りにタイマを用いて、下記のような 送信割り込み、受信割り込み処理を作成したのですが、 割り込み禁止?の手続きがわからない為、途中で受信割り込みが 走ってしまい、うまくいかず困っています。 ご助言をお願いいたします。 〜〜〜〜〜以下抜粋〜〜〜〜〜〜〜〜〜〜 ' 通信設定 With SerialPort .PortName = com1 .BaudRate = 38400 ' 通信速度は38400bps .DataBits = 8 ' データ長は8ビット .Parity = IO.Ports.Parity.Even ' パリティチェック:偶数 .StopBits = IO.Ports.StopBits.One ' ストップビットは1 .Handshake = IO.Ports.Handshake.None ' ハードウェアによるハンドシェイクなし .ReceivedBytesThreshold = 1 End With : '******************** ' 送信割り込み '******************** Private Sub tmrStmg_Tick(・・・) Handles tmrStmg.Tick : tmrStmg.Enabled = False ' 送信開始トリガクリア Call SendStart() '送信開始 : End Sub '***************** ' 送信開始 '***************** Private Function SendStart() As Object If SerialPort.IsOpen Then ' 送信開始 Try SerialPort.Write(mSData, 0, mSDataL)←この処理の直後、受信割込発生 Catch ex As Exception MessageBox.Show(・・・) End Try Else : End If : End Function '************************** ' 受信割り込み '************************** ' デリゲート型の宣言 Delegate Sub RecieveDataDelegate(ByVal RecieveData As String) ' デリゲート型のプロシージャを宣言 Private Sub SetRecieveData(ByVal DataString As String) _comdt_1.Text &= DataString End Sub ' SerialPortコントロールのDataReceivedイベントハンドラ Private Sub SerialPort_DataReceived(・・・) Handles ・・・ ' デリゲート型の変数の宣言と生成 Dim recieve As New RecieveDataDelegate(AddressOf SetRecieveData) Dim mRDataLen As Integer mRDataLen = SerialPort.ReceivedBytesThreshold Dim mRDataB(256) As Byte Try SerialPort.Read(mRDataB, 0, mRDataLen) ' 1バイトだけ受信 If SerialPort.ReceivedBytesThreshold = 1 Then : SerialPort.ReceivedBytesThreshold = 4←この直後、再び受信割込発生 : : |