アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前、VB2005フォームアプリ(.NET Framework)でRS-232C通信するプログラム自作してました。
その後VB、全く弄ってなくて、ややこし話、全部忘れました。
しかし、今回改造が必要になったので、VS2019を入手して再度研究してます。

上記通信プログラムは単純で、シリアルデータの受信と送信を一定の順番で繰り返すだけです。
(データ受信時の割込処理など必要ないという意味です。)
なので、コンソールアプリの方がプログラムがシンプルになります。

Web検索で、関連書籍やサンプルプログラムを調査しましたが、VBでは、フォームにツールボックスの「SrialPort」を張り付ける操作が必要なものばかりです。
(例えば、http://vbnettips.blog.shinobi.jp/stdctrl/serialp …

フォームを使わないコンソールアプリでは、RS-232Cの設定できないんでしょうか。

しかし、試しに、VS2019のVBコンソールアプリの設定で、VB2005の一部コード入力してみました。

---------------------------------------------------------------
Module Module1
Private devPort As System.IO.Ports.SerialPort *ここは一部変更した.

Sub Main()

End Sub
Sub RecSet_OPEN()
'RS PORT OPEN
Dim bRet As Boolean

'sDATA = vbCr & vbLf
bRet = False
'devPort = New SerialPort

With devPort
.PortName = "COM1"
.BaudRate = 9600
.DataBits = 8
.Parity = Parity.None ※1
.StopBits = StopBits.One ※2
.Handshake = Handshake.None ※3
.Encoding = New System.Text.ASCIIEncoding
End With

Try
devPort.Open()
bRet = True
Catch ex As Exception
bRet = False
End Try

If bRet Then
AddHandler devPort.DataReceived, AddressOf OnReceive ※4
With devPort
.DtrEnable = True
.RtsEnable = True
.ReceivedBytesThreshold = 1
.ReadTimeout = SerialPort.InfiniteTimeout ※5
End With
Else
MsgBox("SerialPort Not Open!!", CType(MsgBoxStyle.Information + MsgBoxStyle.OkOnly, MsgBoxStyle), "SerialPort Error")
End If

End Sub
---------------------------------------------------------

すると、※の部分の一部の記述に対してエラーメッセージが表示されます。
例えば、※1の場合、「Parityは宣言されていません・・・」のように出ます。

ツールボックスの「SrialPort」で設定しなくても、こういう記述でも行けそうな気がしますが、どうなんでしょうか。

参考情報など、教えてください。

「VBコンソールアプリ(.NET Fram」の質問画像

A 回答 (3件)

VBは知りませんが…。



https://docs.microsoft.com/ja-jp/dotnet/api/syst …

いわゆるネームスペースの都合なんじゃないですか?

.Parity = Parity.None

.Parity = System.IO.Ports.Parity.None
と書いたらどうなります?
    • good
    • 0
この回答へのお礼

>System.IO.Ports.
ありがとうございます。
※1~3、System.IO.Portsを付けたら赤波線消えました。
今、ビールのんでボーとしてるので、明日※4~5の方、考えてみます。

>「VB.NETはお勧めしません」
この自作ソフトは勤務先零細会社で私だけが使ってます。
信頼性はなくていいです。
それに、VS2020はこの先死ぬまで使うことないかも、です。
ボケ防止にC#の勉強もいいと思いますが・・・。

お礼日時:2020/05/03 15:00

>>相応のコードの記述でしょうね。


その記述のための情報源が見つからないのです。

一般的にアンマネージコードを記載したい方って、使っている言語がC++、C#ではないかと思われます。
私がハードを操作するプログラムの改修の仕事を行ったときは、そのシステムはC++とC#が使われていました。
ですので、VBではなく、C++/CLIか、C#での利用例を探してみるのがいいかもしれません。

P.S.
ネットや書籍を見ていると「VB.NETはお勧めしません」なんて記載を時々目にします。
ちょっとVB.NETのソフトの修正作業で触ったとき、「彼らの言うとおりだ!」と思ったものでした。
    • good
    • 0
この回答へのお礼

私のVB2005の古いプログラム、私がわすれてることとは別に、もともと変ですね。
VB.NETでRS232Cという組み合わせが一般的でないようなので、考え直します。
まず、フォームアプリの基本とC#、すこし研究します。
ありがとうございました。

お礼日時:2020/05/04 11:28

懐かしいですね。


RS-232Cによる通信は、MS-DOSが広まる前のROM-BASICの時代のころからしばらく使っていました。
たぶん.NET Frameworkにおいては、ハードウエアを直接操作するためには、アンマネージ コードで書かないとダメなのではないかと思います。
それをお手軽に実現してくれるのが、ツールボックスの「SrialPort」ではないでしょうか?
ですので、その「SrialPort」と同様のことを自前でやってあげればいいと思います。
    • good
    • 0
この回答へのお礼

>その「SrialPort」と同様のことを自前でやってあげればいいと思います。
相応のコードの記述でしょうね。
その記述のための情報源が見つからないのです。

>RS-232Cによる通信は、MS-DOSが広まる前のROM-BASICの
私のその頃からRS-232Cになじんでます。
もう年金受給世代です。

お礼日時:2020/05/03 10:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています