VisualStudio2005 CLR Windows フォームアプリケーションです。
下記のとおりString型でシリアルポートに書き込んで
いますが、stxとetxの書き込み方がわかりません。
どなたか教えてください。
array<String^>^split = str->Split( chars );
String^ a =safe_cast<String^>(split->GetValue(csv));
String^ b =safe_cast<String^>(split->GetValue(csv+1));
String^ c =safe_cast<String^>(split->GetValue(csv+2));
this->serialPort1->Write(a+b+c);
SerialPort.Write メソッド (Byte[], Int32, Int32)
http://msdn2.microsoft.com/ja-jp/library/ms143551(VS.80).aspx
を使えばよいのでは?
array<Byte>^ stx = {0x02};
this->serialPort1->Write(stx, 0, stx->Length);
>String^ a =safe_cast<String^>(split->GetValue(csv));
って単に
String^ a = split[csv];
ではだめなんでしょうか?
もっとも
>a+b+c
の値を取得するなら、String::Joinを使うとか、
そもそも、,を"に置換するだけのString::Replaceでよいかと。
STX/ETX を使う、というのはプロトコルレベルの話になると思うのだが
UNICODE/UTF16 の STX (U+0002) と、
ASCII の STX (H'02) と、
どちらを使うのが適切なのかは相手機器次第のような気がする
# 俺は UNICODE な STX (U+0002) をしゃべる機器は見たこと無い
エンコーディングには十分気をつける必要がある
自作ソフト間で話し合うだけなら STX など使う必要ないに1票
発言ありがとうございます。
仕様としてASCIIのSTXが指定されています。
参考にさせていただきます。
追加質問ですが、
シリアルデータ送信時にチェックサムも指定されており、
String型の a+b+c のバイト数を求める方法についても
アドバイスください。
お願いいたします。
上記も含め解決できました。
ありがとうございました。
>String型の a+b+c のバイト数を求める方法についても
バイト数?
Unicodeなら文字数*2で取得できますよ。
Shift_JISでならEncodingクラスを使って取得すればいいです。
http://msdn2.microsoft.com/ja-jp/library/w3739zdy(VS.80).aspx