VB.net でRS232C通信プログラムを作成するには?


ひまわり  2006-07-25 02:54:50  No: 96075

お世話になっております。

VB.netで、APIを使用してRS-232Cアプリケーションを作成したいのですが、
何かよいサンプルはありますでしょうか。

Googleで調べて見ましたが、見つかりませんでした。

出来上がったら、アップしますので、ご教授お願い致します。


ささ  2006-07-25 09:04:49  No: 96076

何か良いサンプル
っていうけれどRS232Cは規約であってそれを利用してどんなアプリケーションをつくりたいの?

利用するだけならここの過去ログは?ちょっと調べてみたけれど特に普通の一件目からサンプルらしきものは見付かるけど何をキーワードにしてさがしたの?

良くわからなかったと言うけれど
それを伝えないとこちらも『何か解って何がわからないのか』がわかりません。


ひまわり  2006-07-26 05:05:25  No: 96077

お世話になります。

がんばって一から作っています。
まずは、COMポートをオープンしたいのですが、常に-1が帰ってきてオープンできません。

何が原因でしょうか。
ちなみに、以下のサイトを参考にしました。
http://speana-1.hp.infoseek.co.jp/vb/vb_2/vb_2.htm

以下、ソースです。ご教授お願い致します。

Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" _
    (ByVal lpFileName As String, ByVal dwdesiredAccess As Integer, ByVal dwShareMode As Integer, _
    ByVal lpSecurityAtributes As Long, ByVal dwCreateDisposition As Integer, _
    ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As Integer) As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim byteCom1 As Integer

        byteCom1 = CreateFile("COM1", &H80000000 Or &H40000000, 0, 0, &H3, 0, 0)

        MsgBox(byteCom1)

    End Sub


Hongliang  URL  2006-07-26 05:42:14  No: 96078

関数呼び出しに失敗したら、GetLastError でエラーコードの確認は必須です。
// GetLastError は System.Runtime.InteropServices 名前空間の Marshal.GetLastWin32Error メソッドで代用できます。
エラーコードからエラーの原因を探ります。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/system_error_codes.asp

で、そもそもご使用の PC に COM1 ポートは付いてるんですか?
// レジストリに情報があるはずですが。


ひまわり  2006-07-26 07:53:53  No: 96079

ありがとうございます。こういう基本的なところを教えていただけると非常に助かります。

87が返ってきました。
The parameter is incorrect.  
パラメータが正しくないようです。

うーんなんでしょう。
調べてみます。


ガッ  2006-07-26 09:18:44  No: 96080

うーむ…:
http://www.atmarkit.co.jp/fdotnet/dotnettips/166pinvoke/pinvoke.html


ひでらん  2006-07-26 20:04:34  No: 96081

VB.NETで通信プログラム組んだ事が無いのでよくわかないですが、
Declare Function CreateFile Lib "kernel32.dll" ・・・・(以下省略)
の宣言の「 ByVal lpSecurityAtributes As Long  」は
LongじゃなくてIntegerなのではないだろうか?

VB6ならLongなんでしょうが・・・


特攻隊長まるるう  2006-07-26 22:28:53  No: 96082

IntPtr では?
http://support.microsoft.com/default.aspx?scid=kb;ja;823179


ひまわり  2006-07-27 01:20:26  No: 96083

ひでらんさん,ガッさん、まるるうさん

ありがとうございます。ポート開きました。
VB6.0がないので、APIがいけるとこまでがんばってみます。

次のステップへいってきます。


ひまわり  2006-08-02 03:15:13  No: 96084

お世話になっております。

http://speana-1.hp.infoseek.co.jp/vb/vb_2/vb_2.htm#createfile
上記のサイトにAPIの実行文として、以下の文がありました。

●実行文の一般形式
dummy  =  プロシージャ名(API関数)  (引数1,引数2,・・・)

ここで使用している、dummy を使うと、vb.netではエラーになってしまいます。
dummy とは何なのでしょうか?

ご教授お願い致します。


KG  2006-08-02 03:23:49  No: 96085

dummyは戻値を受ける変数(オブジェクト)であってただの例えだと思いますが

>ここで使用している、dummy を使うと、vb.netではエラーになってしまいます。
dummy以外ではエラーにならないんですか?

また「エラーになってしまいます」だけでは情報が少なすぎます。
どういうタイミング(どの行)でどういうエラーになったかは
提示すべきです。


オショウ  2006-08-02 08:59:10  No: 96086

そもそも、VS.NET 2003 なのでしょうか?

海外ですが・・・
http://www.corradocavalli.cjb.net/
http://www.codeproject.com/dotnet/DotNetComPorts.asp

かなりAPIを熟知してインプリされています。

VS.NET 2005 なら、Portsクラスがあるので、API使わないでも
通信できます。

以上。老婆心ながら・・・


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加