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

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

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

ありがとうございます。



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