忍者ブログ

東裏通


[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

別スレッドからのコントロールへのアクセス2

前に書いたシリアルポートのデータ表示。
もっと簡単な方法があった。

SerialPortのBytesToReadをBackgroundWorkerのDoWork内でポーリング。
表示させたいときはReportProgressで元スレッドにデータを渡せばいい。
DataReceived?なにそれおいしいの?


Public Class Form1
    Private WithEvents BackgroundWorker1 As New System.ComponentModel.BackgroundWorker
    Private SerialPort1 As New System.IO.Ports.SerialPort

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                                                                   Handles MyBase.Load
        If SerialPort1.IsOpen = False Then
            SerialPort1.PortName = System.IO.Ports.SerialPort.GetPortNames()(0)
            SerialPort1.BaudRate = 9600
            SerialPort1.DataBits = 8
            SerialPort1.Parity = System.IO.Ports.Parity.None
            SerialPort1.StopBits = System.IO.Ports.StopBits.One
            SerialPort1.Open()
        End If
        BackgroundWorker1.WorkerReportsProgress = True
        BackgroundWorker1.RunWorkerAsync()
    End Sub

    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, _
                                         ByVal e As System.ComponentModel.DoWorkEventArgs) _
                                        Handles BackgroundWorker1.DoWork
        Try
            Static rxcnt As Integer = 0
            Static rxbuf(1024) As Byte
            While True
                If SerialPort1.BytesToRead <> 0 Then
                    rxcnt = SerialPort1.Read(rxbuf, rxcnt, SerialPort1.BytesToRead)
                    BackgroundWorker1.ReportProgress(0, rxbuf)
                End If
            End While
        Catch ex As Exception
        End Try
    End Sub

    Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, _
                       ByVal e As System.ComponentModel.ProgressChangedEventArgs) _
                                          Handles BackgroundWorker1.ProgressChanged
        Dim rxbuf() As Byte = e.UserState
        TextBox1.Text = rxbuf(0)
    End Sub
End Class


動くんじゃないかな?試してないけど。

拍手[0回]

PR

ラウンドロビンスケジューラ

作ってみた。
R8C/M12Aはとっても小さいのであまり意味ない気もするけど。

タイマ割り込みでスタックを入れ替えることでコンテキストスイッチ。
RTOSがどんな実装してるか知らないけど、これくらいしか浮かばなかったので。

なんか専用命令もあるけどよくわからないし。

というわけでどんどん使ってくれたまへ。

roundrobin.zip

拍手[0回]

自動ビットレート検出

R8C/M12Aで自動でビットレートを検出して通信するようにプログラムしてみました。
ヘッダを0xFFとしてスタートビットの幅をタイマRJ2で測定しています。

0xFF,0x01,0x00,0xFFと送信すると、
0xFF,0x02,0x03,0x01,0x02,0x03,0xF5と返信してきます。

とりあえず56kbpsまでは使えるみたいです。
何かのプログラムの参考にどうぞ。

autobitrate.zip

拍手[0回]

きゅうり始めました

きゅうりを育て始めました。
昨年はトマトとイチゴをやったのですが、イチゴは灰カビ病?でやられちゃいました。
今度こそちゃんと育てたいと思います。

拍手[0回]

R8C/M11A、R8C/M12AのI/Oファイル

HEWでR8C/M12Aのプログラム適当に作ってたら動かなかったのでSFRの状態を見ようと思った。
でも表示->CPU->IOでウインドウ開いても表示されない。。。

よく調べて見るとR8C E8aエミュレータデバッガ V.1.04.00 リリースノートにこんなことが…

4.6 I/O ファイルに関する注意事項

orz

すでにRev.1.00は出てるのに。。。ひどい。。
仕方ないので自分で作った。

R8CM12A.io

M11A/M12Aのどっちでも使えるはず。
ルネサスさん、いくらR8Cが開発停止したからって中途半端で放っておかないでくださいよ。。

拍手[0回]


プラグイン

カレンダー

04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリー

最新記事

最新CM

最新TB

プロフィール

HN:
東こうじ
性別:
男性

リンク

サイトマスター

アクセス解析

バーコード

RSS

ブログ内検索

アーカイブ

カウンター