以前、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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
C# シリアル通信でデータ受信時の欠損について
C言語・C++・C#
-
VB.netで、シリアル通信のタイムアウト処理について
Visual Basic(VBA)
-
シリアル通信でコマンドを送信し、戻ってきたら実行する
Visual Basic(VBA)
-
-
4
シリアル通信時のデータ受信方法
Visual Basic(VBA)
-
5
SerialPortのDataReceivedイベントについて
Visual Basic(VBA)
-
6
DataViewで複数条件のフィルタのやり方
Visual Basic(VBA)
-
7
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
8
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
9
Visual Basic 2010を使ってRS-232Cとの通信をした
Visual Basic(VBA)
-
10
VB.NET(2005)のSerialPort" RTSラインを制御"
Visual Basic(VBA)
-
11
SerialPort処理でInvokeメソッドを使用するとエラーが発生。
Visual Basic(VBA)
-
12
VB.NETでMSComm が追加できず?
Microsoft ASP
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
指定したフォルダーを最前面表...
-
Arduino nano(アルドゥイーノ ...
-
C言語→MATLABへの変換で、困っ...
-
VBA
-
Labviewって・・・
-
C言語primeについて
-
プロダクションコードとは?
-
任意ソフトのテキストボックス...
-
デジタルフィルタ
-
Excel VBA で、データベースフ...
-
三次元のグラフを書きたいので...
-
processingで雪が積もるような...
-
C言語でpingを実行してその結果...
-
共分散行列を求めるプログラム
-
VB6 画面サイズ変更について
-
四択のクイズを作っているので...
-
初級者の質問――time_tについて
-
Outlook 動作を停止しました
-
C言語にて作成中の三目並べにつ...
-
マイコンからプログラムを読み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba listviewにおけるtextのAli...
-
プロダクションコードとは?
-
指定したフォルダーを最前面表...
-
Webプログラムってネイティブア...
-
COBOLのS9タイプからXタイプへ...
-
VBコンソールアプリ(.NET Frame...
-
VBA
-
2値化した画像の黒い部分のピク...
-
初級者の質問――time_tについて
-
無限ループ中にある任意のキー...
-
Arduino nano(アルドゥイーノ ...
-
世界一美しいソースコード
-
VBAにてTIFFから画像を取込みた...
-
C言語でpingを実行してその結果...
-
三次元のグラフを書きたいので...
-
マイコンからプログラムを読み...
-
XPathの関数「text()="value"」...
-
C言語→MATLABへの変換で、困っ...
-
URLの最初の「h」を略す
-
プログラミングの問題と解答例...
おすすめ情報