HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
0606
yayHSPでDCB構造体を扱うときの方法について2解決


yay

リンク

2023/6/6(Tue) 14:32:34|NO.99547

初めて書き込まさせていただきます。yayと申します。
今回はどうしても詰まってしまいましたので、質問をさせていただきます。

質問は「DCB構造体をHSPで扱いたい」ということになります。
WinAPIを使って通信を実装したい時に発生しました。
具体例が以下になります


hcom = //COMポート番号 dim DCB ,7 //DCB構造体を操作し初期設定したい setcomatate hcom,varptr(DCB)

参考:https://learn.microsoft.com/ja-jp/windows/win32/api/winbase/ns-winbase-dcb

ここでDBC構造体を弄りたいのですが、(特にfRTscontrol等2バイトデータ)の設定方法がわからないです。

なにかご存じの方いらっしゃいましたらよろしくお願いいたします。



この記事に返信する


沢渡

リンク

2023/6/6(Tue) 21:03:10|NO.99548

当方では試せませんが、各メンバは以下のように設定すれば良いのではないでしょうか。
以下、各メンバと同じ名前の変数に値が入っているものと仮定します。

DCB(0)=DCBlength DCB(1)=BaudRate //以下、1bitの変数には0か1、2bitの変数には0〜3、17bitの変数には0〜0x1FFFFの値しか入れないこと。 DCB(2)=fBinary //1bit DCB(2)|=fParity<<1 //1bit DCB(2)|=fOutxCtsFlow<<2 //1bit DCB(2)|=fOutxDsrFlow<<3 //1bit DCB(2)|=fDtrControl<<4 //2bit DCB(2)|=fDsrSensitivity<<6 //1bit DCB(2)|=fTXContinueOnXoff<<7 //1bit DCB(2)|=fOutX<<8 //1bit DCB(2)|=fInX<<9 //1bit DCB(2)|=fErrorChar<<10 //1bit DCB(2)|=fNull<<11 //1bit DCB(2)|=fRtsControl<<12 //2bit DCB(2)|=fAbortOnError<<14 //1bit DCB(2)|=fDummy2<<15 //17bit DCB(3)=wReserved //16bit DCB(3)|=XonLim<<16 //16bit DCB(4)=XoffLim //16bit DCB(4)|=ByteSize<<16 //8bit DCB(4)|=Parity<<24 //8bit DCB(5)=StopBits //8bit DCB(5)|=XonChar<<8 //8bit DCB(5)|=XoffChar<<16 //8bit DCB(5)|=ErrorChar<<24 //8bit DCB(6)=EofChar //8bit DCB(6)|=EvtChar<<8 //8bit DCB(6)|=wReserved1<<16 //16bit
構造体から値を取り出したい場合は右ビットシフトしてANDでマスクすればよいでしょう。
以下は例です。

fDsrSensitivity=(DCB(2)>>6)&0x1 //1bit fRtsControl=(DCB(2)>>12)&0x3 //2bit XonLim=(DCB(3)>>16)&0xFFFF //16bit ByteSize=(DCB(4)>>16)0xFF //8bit



yay

リンク

2023/6/7(Wed) 15:26:04|NO.99549

沢渡さん
回答ありがとうございます。

参考にして構造体を触ってみたところ、おそらくきちんと変更できたようでした。

ありがとうございます。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.99547への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2023(c) All rights reserved.