f8g

VB.NETでCOMコンポーネント作るのが凄い簡単でした

http://www.vector.co.jp/soft/win95/prog/se373990.html
これを見るととても簡単そうなのでやってみたら、本当に簡単にできた。試しにMSCommっぽいの。

Imports Microsoft.VisualBasic
Imports System.Runtime.InteropServices
Imports System.IO.Ports

Namespace CommPort

    Public Class Comm

        Public Port As Integer = 1
        Public BaudRate As Integer = 9600
        Public Parity As Integer = System.IO.Ports.Parity.None
        Public DataBits As Integer = 8
        Public StopBits As Integer = 1

        Dim serial As System.IO.Ports.SerialPort

        Public Sub Open()
            Dim portName As String
            portName = "COM" & Port
            serial = New System.IO.Ports.SerialPort(portName, BaudRate, Parity, DataBits)
            serial.Open()
        End Sub

        Public Sub Close()
            serial.Close()
        End Sub

        Public Function Input() As String
            Input = serial.ReadExisting()
        End Function

        Public Sub Output(ByVal text As String)
            serial.Write(text)
        End Sub

    End Class

End Namespace

GPSで。

var comm = WSH.CreateObject("CommPort.Comm");
comm.Port = 7;
comm.BaudRate = 4800;
comm.Open();

var i = 0;

while(i ++ < 10){
	WSH.Echo(comm.Input());
	WSH.Sleep(1000);
}

ASRからWin32呼んでScriptControl使うとかより、こっちでやった方が簡単。ただ、あんまりやりすぎてもレジストリに書き込みまくってWindows自体が遅くなったりしそうだけど。