
以前、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」で設定しなくても、こういう記述でも行けそうな気がしますが、どうなんでしょうか。
参考情報など、教えてください。

No.3ベストアンサー
- 回答日時:
VBは知りませんが…。
https://docs.microsoft.com/ja-jp/dotnet/api/syst …
いわゆるネームスペースの都合なんじゃないですか?
.Parity = Parity.None
を
.Parity = System.IO.Ports.Parity.None
と書いたらどうなります?
>System.IO.Ports.
ありがとうございます。
※1~3、System.IO.Portsを付けたら赤波線消えました。
今、ビールのんでボーとしてるので、明日※4~5の方、考えてみます。
>「VB.NETはお勧めしません」
この自作ソフトは勤務先零細会社で私だけが使ってます。
信頼性はなくていいです。
それに、VS2020はこの先死ぬまで使うことないかも、です。
ボケ防止にC#の勉強もいいと思いますが・・・。
No.2
- 回答日時:
>>相応のコードの記述でしょうね。
その記述のための情報源が見つからないのです。
一般的にアンマネージコードを記載したい方って、使っている言語がC++、C#ではないかと思われます。
私がハードを操作するプログラムの改修の仕事を行ったときは、そのシステムはC++とC#が使われていました。
ですので、VBではなく、C++/CLIか、C#での利用例を探してみるのがいいかもしれません。
P.S.
ネットや書籍を見ていると「VB.NETはお勧めしません」なんて記載を時々目にします。
ちょっとVB.NETのソフトの修正作業で触ったとき、「彼らの言うとおりだ!」と思ったものでした。
私のVB2005の古いプログラム、私がわすれてることとは別に、もともと変ですね。
VB.NETでRS232Cという組み合わせが一般的でないようなので、考え直します。
まず、フォームアプリの基本とC#、すこし研究します。
ありがとうございました。
No.1
- 回答日時:
懐かしいですね。
RS-232Cによる通信は、MS-DOSが広まる前のROM-BASICの時代のころからしばらく使っていました。
たぶん.NET Frameworkにおいては、ハードウエアを直接操作するためには、アンマネージ コードで書かないとダメなのではないかと思います。
それをお手軽に実現してくれるのが、ツールボックスの「SrialPort」ではないでしょうか?
ですので、その「SrialPort」と同様のことを自前でやってあげればいいと思います。
>その「SrialPort」と同様のことを自前でやってあげればいいと思います。
相応のコードの記述でしょうね。
その記述のための情報源が見つからないのです。
>RS-232Cによる通信は、MS-DOSが広まる前のROM-BASICの
私のその頃からRS-232Cになじんでます。
もう年金受給世代です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- 政治 大阪府でギャンブル依存症対策の条例が成立……そりゃ、まぁ、良いんですけどね、パチンコはどうなんだろ 8 2022/10/27 16:02
- Windows 10 プロファイルエラーについて 2 2022/12/16 09:31
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba listviewにおけるtextのAli...
-
Arduino nano(アルドゥイーノ ...
-
2値化した画像の黒い部分のピク...
-
プログラミングの問題と解答例...
-
プロダクションコードとは?
-
無限ループ中にある任意のキー...
-
C言語 多次元配列(3次元配列)
-
USBカメラのTWAIN制御について
-
Excel VBA で、データベースフ...
-
Labviewって・・・
-
指定したフォルダーを最前面表...
-
初級者の質問――time_tについて
-
C言語primeについて
-
VB2008 ACCESS 最適化について
-
待ち行列のシミュレーションの...
-
DataGridViewで指定列の背景色...
-
コードプロテクトについて
-
三次元のグラフを書きたいので...
-
プログラミングの問題です。写...
-
Pythonで仮想通貨の自動売買が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba listviewにおけるtextのAli...
-
指定したフォルダーを最前面表...
-
マイコンからプログラムを読み...
-
プロダクションコードとは?
-
2値化した画像の黒い部分のピク...
-
初級者の質問――time_tについて
-
VBA
-
Arduino nano(アルドゥイーノ ...
-
COBOLのS9タイプからXタイプへ...
-
無限ループ中にある任意のキー...
-
世界一美しいソースコード
-
DCOMのアプリで配布用プロ...
-
VC++で作成した図をクリップボ...
-
openGLで物体を半透明にして表...
-
DataGridViewで指定列の背景色...
-
signalハンドラに引数を渡したい
-
C言語→MATLABへの変換で、困っ...
-
VB6 画面サイズ変更について
-
VBAのプログラムが動いているか...
-
c言語 コマンドライン引数
おすすめ情報