私はこれが初めてで、電圧計からデータを読み取るための小さなアプリケーションを書いています。RadioShack デジタル マルチメーター 46 レンジです。私のプログラムの目的は、特定の電圧を検出したときに自動的に何かを実行することです。私は C# を使用しており、既に SerialPort クラスに精通しています。
私のプログラムが実行され、電圧計からデータが読み込まれます。ただし、データはすべてフォーマットされていない/意味不明です。このデバイスには、PC に電圧を表示する独自のソフトウェアが付属していますが、独自のプログラムから電圧を取得する必要があるため、これは役に立ちません。このデータを有用なものに変換する方法がわかりません。
参考までに、私は SerialPort.Read() メソッドを使用しています。
byte[] voltage = new byte[100];
_serialPort.Read(voltage, 0, 99);
データを取得し、次のように表示します。
16 0 30 0 6 198 30 6 126 254 30 0 30 16 0 30 0 6 198 30 6 126 254 30 0 30 16 0 3
0 0 6 198 30 6 126 254 30 0 30 16 0 30 0 6 198 30 6 126 254 30 0 30 16 0 30 0 6
198 30 6 126 254 30 0 30 24 0 30 0 6 198 30 6 126 254 30 0 30 16 0 30 0 254 30 6
126 252 30 0 6 0 30 0 254 30 6 126 254 30 0
配列の各要素はスペースで区切られます。byte[] の代わりに char[] 配列を使用すると、完全に意味不明になります。
▲ ? ? ▲ ♠ ~ ? ▲ ♠ ▲ ? ? ▲ ♠ ~ ? ▲ ♠ ▲ ? ? ▲ ♠ ~ ? ▲ ♠
.ReadExisting() メソッドを使用すると、次のようになります。
▲ ?~?♠~?▲ ▲? ▲ ?~♠~?▲ ?↑ ▲ ??~♠~?▲ F? ▲ ??~♠~?▲ D? ▲ ??~♠~?▲ f?
.ReadLine() がタイムアウトするため、機能しません。ReadByte() と ReadChar() は、配列関数への Read() と同様の数値を与えるだけです。
私はこのようなことをしたことがなく、他にどこを向くべきか本当にわからないので、頭がいっぱいです。