Blenderで使おうと思ってPythonに手を出してみたけど、窓の作成が面倒なのであっさり挫折してしまった。 だけどプロブラムしていたら、また何かプログラミングしたくなったので、結局C#にもどってプログラミングすることにする。 まあ、いつまで続くかわからないけど..。
VisualStudio2022のバージョンアップで何故かトラブってだいぶ時間をロスしたけど、一応開発環境が元に戻ったのでC#でのプログラミング再開。
最初のプロジェクトは、serialportの信号を入力するソフト。
serialPortには、ハンドシェイクするためのDSRとCTSという信号線がある。 こいつをPCに取り込む。
ソース
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
using System; using System.IO.Ports; using System.Windows.Forms; namespace EleKeyV0._0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { try { if(serialPort1.IsOpen == true) { return; } serialPort1.Open(); } catch(Exception ex) { MessageBox.Show(ex.Message); } } private void statseri(string stat) { label1.Text = stat; } private delegate void serialcheck(string stat); private void serialPort1_PinChanged(object sender, SerialPinChangedEventArgs e) { serialcheck del_seri = new serialcheck(statseri); if (serialPort1.DsrHolding) { this.Invoke(del_seri, "DSR"); } else if (serialPort1.CtsHolding) { this.Invoke(del_seri, "CTS"); } else this.Invoke(del_seri, "NONE"); } } } |
serialPortコンポーネントを使って取り込むんだけど、pinchengedイベントは別スレッドなので直接Form上のコンポーネントを制御できない。 デリゲートを使ってForm上のラベルに状態を表示した。