質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

2073閲覧

VBの関数をC#で使いたい.CreateFile()とWriteFile()をC#で

karasa

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2018/02/06 10:44

編集2018/02/08 10:33

前提・実現したいこと

VBでやってたシリアル通信をC#で行おうとしている者です。
VBでは下部の送信コマンドでできていたのですが、C#のやり方がわかりません。

VB

1Dim bRet As Boolean 2Dim hComm As Integer 3Dim wDATA As String 4Dim dLen, wLen As Int32 5678Dim 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さんにします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

SerialPortクラスというものがあるので
それを使います

投稿2018/02/06 10:57

ozwk

総合スコア13512

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

投稿2018/02/06 10:57

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問