前提・実現したいこと
VBでやってたシリアル通信をC#で行おうとしている者です。
VBでは下部の送信コマンドでできていたのですが、C#のやり方がわかりません。
VB
1Dim bRet As Boolean 2Dim hComm As Integer 3Dim wDATA As String 4Dim dLen, wLen As Int32 5・ 6・ 7・ 8Dim CommName As String = "COM8" 9'接続判定用 10hComm = CreateFile(CommName, &HC0000000, 0, IntPtr.Zero, &H3, &H80, IntPtr.Zero) 11If hComm = -1 Then 12 MsgBox("Commポートオープンに失敗しました") 13End If 14'送信コマンド 15bRet = WriteFile(hComm, wDATA, dLen, wLen, IntPtr.Zero)
一応調べて
VB
1hComm = CreateFile(CommName, &HC0000000, 0, IntPtr.Zero, &H3, &H80, IntPtr.Zero)
はC#では
C#
1[DllImport(@"kernel32.dll")] 2 static extern unsafe System.IntPtr CreateFile(string FileName, uint DesiredAccess, int ShareMode, IntPtr SecurityAttributes, int CreationDisposition, int FlagsAndAttributes, IntPtr hTemplateFile);
でやってみましたがあっている気がしません。VBの定義を見ても
VB
1Public Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" _ 2 (ByVal lpFileName As String, ByVal dwDesiredAccess As Int32, _ 3 ByVal dwShareMode As Int32, ByVal lpSecurityAttributes As IntPtr, _ 4 ByVal dwCreationDisposition As Int32, ByVal dwFlagsAndAttributes As Int32, _ 5 ByVal hTemplateFile As IntPtr) As Integer
と
VB
1Public Declare Function WriteFile Lib "kernel32.dll" _ 2 (ByVal hComm As Integer, ByVal lpBuffer As String, _ 3 ByVal nNumberOfBytesToWrite As Int32, ByRef lpNumberOfBytesWritten _ 4 As Int32, ByVal lpOverlapped As IntPtr) As Boolean
でわからなかったです。
補足情報(FW/ツールのバージョンなど)
VisualStudio2013使用中です。
ありがとうございます。
通信がVBと同じようにできました。
URLに助けられたので、BAをZuishinさんにします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。