2024年10月30日水曜日

SerialDebugTool3: 送出リストでの繰り返し動作

 ども。

拙作、Serial Debug Tool3 で、さっそく送出リスト表示を使っていただけるようで
ちょっとうれしい。
で、

『連続送信で繰り返し動作できないの?』

との質問をいただいたので、ちょっと対応してみました。
たしかに、装置の連続エージングなんかをやるには、

『繰り返し動作ほしいかも❤』

となりそうなので。
やはり、自分の想像が足りてないよね、と反省しきり💦


というわけで、最新版

シリアルデバッグツール 3 R1.00.8(2024/10/30) 

をアップしておきました。
ご確認いただければ、と。

2024年10月24日木曜日

SerialDebugTool3のバグフィックス。。。💦

拙作、Serial Debug Tool3 をご利用いただける人もいるようで早速バグ報告もらった💦

全くの初期状態で、送信リスト画面を表示した際に、ファイルがないので
選択することになるんだけど、変更ボタンを押すとエラー終了しちゃう💦
原因は、ファイルダイアログに渡すイニシャルフォルダを指定する際に
ファイルの存在確認をサボってるので、フォルダ指定エラーがでちゃうと。

自分だけでやってると、こういうのが残っちゃうね💦
すみません。
というわけで、最新版

シリアルデバッグツール 3 R1.00.6(2024/10/22) 

をアップしておきました。
ご確認いただければ、と。

2024年10月2日水曜日

Serial Debug Tool3 に CRCの計算プログラムを同梱

Serial Debug Tool3 で、電文送受信をする際に、テストデータとして
CRC8や CRC16、簡易なところだと BCC, SUM を付与することが多いわけですが
本番プログラムならいざ知らず、これが意外とめんどくさい。

というわけで、 CRC8/CRC16/BCC/SUM を計算するプログラムを同梱してみました。

シリアルデバッグツール 3 R1.00.5(2024/10/02) 

メニューから、呼び出しできるようにしていますが、フォルダ内に同梱されている
CalcCheck.exe
を実行してもらえば、単体ソフトとして動作します。

役に立てばいいけれど。



2024年9月26日木曜日

Serial Debug Tool3 のファイルドロップ対応

 Serial Debug Tool3 で、テキストファイルをDrag and Drop で送信できるように改定してみました。

シリアルデバッグツール 3 R1.00.4 (2024/09/26) 

 わざわざ、送信リストから全転送とかしなくてもいいかな、と思い立ったので。
ついでなので、テキストのペーストを受け入れるようにもしてみました。
送信リストから行う場合、中断できるけれど、ドラッグアンドドロップとペーストでは
送り終わるまで、中断できないのが違いにはなるかな。

ちょいちょい、更新していってます。

2024年9月25日水曜日

Serial Debug Tool3 をちょっと改定

SerialDebugTool3をちょっと改定しました。
最後に表示した画面位置とサイズを覚えるように。
 MDR がらくた置き場(笑)からダウンロードできます。
来週水曜には Vector 公開サイトにも更新入ると思います。

それにしても、いい時代になったなぁ。
従来の SerialDebugTool2のときにも、同機能があったけれど
ノートPCで外出先でモニタ接続ないときに、画面外に表示されてて
にっちもさっちも!みたいなことがあったけれど💦
C#だと Form.Screen で 現在有効なディスプレイを簡単に検出できるので
起動時にチェックさえすれば、とりあえず、簡易には回避できますね。

Win32APIで、ゴリゴリするなんてめんどくさいから、どうしようかな
とおもってたけれど、 Geminiさん、わりとすんなり教えてくれた(笑)

とりあえず、こうやってちょっとづつ改定していかないと。

2024年9月19日木曜日

お久しぶり です (Serial Debug Tool3 の開発について)

 お久しぶりです💦
最後の投稿が2019年末だったので、5年も放置状態だったのね。

2020年初に高熱、収束後は1月末まで失声(ほぼ発声できなかった💦)というのもあって、なんとなくこういうのからは遠ざかってました。。。
当時まだコロナってのが一般的ではなくて、医者からも『いつものアレルギー』っていわれたけれど、全くアレルギー薬が効かなかったし、突然の高熱と眩暈で立てなくなるなんて初めての経験。たぶんコロナだったんだろうなぁ(旅行先で外人さんに囲まれてたし💦)

閑話休題。

さて、仕事もイロイロしているけれど、マイコン系は少ないねぇ。
それでも、結構しているほうだけど。

PCだと、従来のUSB-UARTをつかったシリアルポート制御なんてあたりまえにあるけれど、

加えて、GPIB、UDP、TCPでのデータ通信も増えてきた印象。
やっと次に移行するかんじなのかなぁ。。。

ということで、まいど、いろいろ専用ツールをつくって対応してきたんだけど、めんどくさいので、デバッグツールを再開発した(笑)
拙作シリアルデバッグツール2をベースにしようとおもったけれど、すでにEmbacadero C++ Builderなんて使いたくないし💦、新たにC#で作成。

いまどきなので、ついでに、UDP/TCP でも同様にできるように拡張してみた。
通信で電文の送受信する、というのは共通なので、個別の送受信ルーチンの仕様を共通化してゴゾゴソ。

しかし、C#って偉大(笑)
C++だと送信電文解析のところ、つくるだけで結構大変だったんだけど、
普通に 正規表現 とか使えるもんだから見通しスッキリだし、ThreadPoolとかちょいちょいって書けるし。

仕事ツールとしてはこれくらいできてると、そこそこ使えるかな~

今回、TCP/IPでの通信ができるようになったので、

HTMLのアクセスってほんまはどうなん??
みたいなのを試してみた(笑)
SerialDebugTool3で、
TCP/IP Server Mode  Port:80
で待ち受けして、
ブラウザ側から、アドレスバーに
『localhost』
で接続開始。

あとは所定のデータをずらら~~っと入れれば

Webページが順次表示されるという、なんともわかりやすいのが確認できる(笑)
サンプルとして testResponse.txt というのを同梱しているので、
送信リスト画面から、送信してみて(笑)




現在、Vector での掲載待ちで、約2週間かかったorz
今日、新たにR1.00.2をアップしたので、来週水曜には更新されるかと。。。
シリアルデバッグツール3 (Vector紹介ページ)

MDR がらくた置き場(笑) のほうには順次最新版をアップしていきます。
できれば、Vectorのほうからダウンロードしてもらえると、ダウンロード数がわかってうれしいけれど、ま、これも時代ってことでしかたないかなぁ💦
とりあえず、窓の杜のほうにも申請しておくかなぁ💦

 




ps.

エゴサもしてみるもんね(笑)
 ザツメモブログ さんが昨年、記事を書いててくれた模様。
ありがとうございます!(*^▽^*)

つねづね思ふこと にも(笑)
こちらは 2015年だからちょっと古いけれど。


2019年12月18日水曜日

PSoC5LP で いまさら mruby/c を試してみる その3 (お試し編) (PSoC AdventCalendar2019)


さて。
PSoC Advent Calendar 2019 での 3つめですね。

mruby/c 2.0 でうごく、サンプルはできたので
いろいろできそうだけど。

で、ちょっと気になったのは最初によんだ
利用説明書
の記述。

内蔵デバイスをいろいろ、使えるようにしてくれてるん
だろうなぁ、とか思いつつ、 読み進めていったんだけど

こういう記述があつまってるところはないかしら?

まぁ、
mutex、sleep()、relinquish()
があればタスク管理上はほぼ問題なくなるだろうし
いいんだけれど。
mruby/c で
『あれ、どう記述したらいいんだろう???』
ってのに対応できる資料がないのはイタイからね。


で、微妙に気になったのが、UARTについての記述。










PSoC5だと UDBの分だけ、 UARTつかえるよ!っていうのは
いいとして、PSoC5LP PrototypingKit の UART部は
KitProg2(デバッガ部)のPSoCに直結されて
PCからは、USB-CDC そのものだから、本来は
デバッグ出力用の hal_write()  のほうに割り付けて
しまうほうがうれしいとおもんだけどなぁ。
まぁ、uartクラス的に書くのかは勉強になる。
ただ、気になるのは、
『PSoC5LP開発環境の仕様により、ボーレートの変更がソフトウェアでできません。
   標準で、19200bps固定です。』
っていう記述。

うっそーん!  できるよ、あたりまえじゃん!
これは
PSoCのこと、わかってないんじゃないの?
ってタイミングでかかれたんだろうなぁ。

たしかに、PSoC の UARTコンポーネントでは
速度を指定するAPIは生成されないですね。
ただ、できないわけではないよ。

2017年版の Advent Calendarでも 書いたので
詳細は そちらを参照してもらえばいいけれど、
要は、UARTも基準となっている、IMOのクロックに
同期してうごいているので、これを正しい分周比に
かえてやれば、好きな周波数なんて簡単に設定できますよ、
ってことですね。

=========

=========
こんなかんじですかね。

PSoC Creater で生成したプロジェクトを利用すると
利用するマスタークロックは  cyfitter.h というファイルに

BCLK__BUS_CLK__HZ


として定義されています。

IMO を 48MHz で定義した プロジェクト の場合であれば

#define BCLK__BUS_CLK__HZ 48000000U
ですね。
欲しい速度(bitrate)を 8倍することで Byte/Secの単位とし
それを分周比として
UART_1_IntClock_SetDividerRegister()
という関数に引き渡してやればいいだけですね。

問題は、与える分周比をどうやって算出するのか、 だけど
たとえば 115200bps がほしいのなら
  115200bps = 115.2kHz
で、1バイト分のサンプリング = 8倍 が欲しい周波数なわけです。

サンプリングを8倍した 921.6kHz が与えられれば、いいわけです。
ここまでくれば簡単で、
この921.6kHzを生成するのに、48MHzを52分周すると
近似として  923.076kHz 得られるじゃない?ってことですね。

式にすると
 52 = 48000000 / (115200 * 8)
ですね。

というわけで、この関数をmruby/c から呼べるように
用意すればいいだけです。

=========

=========
c_setBitRate関数が 実際にmrubyから呼び出しされる
関数ですね。

このプログラムでは UARTを
hal_uart
というコンポーネント名で登録したので、上記のように
なっています。
mruby から
setBitRate( 115200 )
みたいによべばいいですね。

=====================================
いろいろつかってみると、結局のところ
デバッグができるのが、PSoC 版のいいところ
なのかも。

肝心のmrubyでは、デバッグできないもん。
実際、前回のように、
いま、なぜ動かないのか?
を確認できないのはつらい。

じゃ、結局『ぜんぶCでかきゃ、いいじゃん!』ってなりそうなものだけど、
マルチタスク的にコンパクトにいろいろやりたいとなると
案外Cだと骨が折れるんですよ。
基本になる挙動は、 Cで関数単位で記述しておいて
タスク起動と同期を mruby で制御、ってのが
もっともお手軽なのかもしれません。
実装サイズがコンパクトなRTOS的につかう!
のが最適なのか、とおもいますね。

さて、ちょっとmruby の文法、勉強しないと。。。