• 締切済み

.net を用いて RS232C通信を行うことは可能?

(1)VC++ を用いて RS232C通信のDLLファイルを作成している のですが、.net(VC++) を用いて、RS232C通信のDLL ファイルを作成することは可能でしょうか? (2) また、現状使用している VC++ のソース(プロジェクト) は、そのままで .net でコンパイルすれば使用可能なので しょうか? (3) 可能であるが、変更,対策が必要な場合、どのように すればいいのでしょうか? 以上、よろしくお願いいたします

  • nao0
  • お礼率10% (50/483)

みんなの回答

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

VC++.netではNET Frameworkを使用しない 従来通りのプロジェクトを作成できるので ほとんど問題ありませんよ。 ワークシートの場合、dswを開こうとすると 「~変換しますか?」って聞いてくるので それで変換できます。 若干C++の仕様が変わっていて 例えばstringとchar*を同時にオーバーロードできないとか 細かいエラーはでるかもしれません。 それとも NET Frameworkに対応したアプリに変更したいという 事ですか?

回答No.1

 MSDNの「Visual Studio.NET→Visual C++→C++マネージ拡張プログラミング」の項目を、よ~~~~く読んでください。アンマネージコードとマネージコードの違い、マネージコードからアンマネージコードを呼び出す方法、など、「理解」していなければいくらでも躓きます。腰を据えて取りかかってください。  そんな時間はない、なら、.NET Frameworkを利用しないでやってください。

関連するQ&A

  • RS232cと通信が可能な、CまたはC++のプログラム

    初めて投稿します。 現在卒業研究で、RS232cで接続された2次元センサ(カメラで対象物をトラッキングし、2次元座標データをPCに送る計測器)のデータをPC(OSはXP)で読み込もうとしています。 以下のサイトを見つけ、 http://7ujm.net/C++/Rs232c.h.html ソースファイルとヘッダーファイルからなるプログラムをつくり(プログラムの変更点は最後に明記しました) 、VC++とBORLANDC++で試してみたのですが VC++ではプロジェクトのビルド時に 「fatal error C1010: プリコンパイル済みのヘッダーの検索中に予期しないEOFを検出しました。」 とエラーが出てしまいます。 _tmain()関数の引数を無記入にしてみてもエラーの内容は変わりません でした。 また、BORLANDC++ではコンパイル時に 「エラー E2268 RS232.cpp 11: 未定義の関数'printf'を呼び出した(関数 tmai())」 「エラー E2268 RS232.cpp 13: 未定義の関数'gethar'を呼び出した(関数 tmai())」 となってしまい、ヘッダーファイルのみをコンパイルしても 「エラー E2141 RS232c.h 10:宣言の構文エラー」 というエラーが生じてしまいます。 念のためこちらも http://okwave.jp/qa733184.html 参考に、BORLANDの設定(bcc32.cfg ファイルの確認など、最初の設定)も確認しましたが、独習Cなどの教本に載っているプログラムでは問題なく動作します。 なお計測機器のボーレートは115200bps、ターミネータはcr(キャリッジリターン)のみで(lf(ラインフィード)が入ってもかまわない)、送信コマンドはASCII文字となっています。 ハイパーターミナル、MATLABのM-fileでの通信は確認済みです。 もしこのような環境でRS232c通信が利用可能なC(またはC++)プログラムをご存知の方がいらっしゃれば、教えていただけないでしょうか? よろしくお願いします。 「ソースファイル」 #include "RS232c.h" //このヘッダーを取り込みます。 int _tmain() { RS232c rs; rs.Connect(); rs.Send("POS#?,,1 CR/LF");//文字列を送信 Send(送信文字列) char w[100]; rs.Read(w,100); //文字列の受信 Read(char配列,読み込む文字数) printf(w); getchar(); return 0; } 「ヘッダーファイル」 #ifndef _RS_232C_H_ #define _RS_232C_H_ #if _MSC_VER > 1000 #pragma once #endif #include <windows.h> <中略> bool RS232c::Connect(char* PortNmae="COM1", int BaudRate = 115200, int ByteSize = 8, int Parity = NOPARITY, int StopBits = ONESTOPBIT, int RTS = RTS_CONTROL_DISABLE, int DTR = DTR_CONTROL_DISABLE, int ReadTimeOut =700, int WriteTimeOut = 700 ) <中略> { RS232c::~RS232c(){ //ポートを閉じます CloseHandle(m_hComm); } #endif // _RS_232C_H_

  • VC++でRS232C(COMポート通信)

    VC++でRS232C(COMポート)通信をするソフトを作成していますが、COMポートが開けず通信ができません。ポートが開けない理由を追跡する方法はありますか?

  • Borland C++ Builderによるdll作成について

    Borland C++ Builderを使用してプロジェクトをコンパイル してdllを作成する際、コンパイルに成功してあるdllができたとして、 その後プロジェクトに何の変更もなく、再コンパイルすると dllの中身は何か変わっているのでしょうか? 例えば、コンパイル日時の情報が中に書き込まれているなど。 サイズが変わることもあるのでしょうか?

  • VC.NET(C#)のクラスライブラリをBCB(C++)で使用したい

    タイトルにあるように、 VC.NET(C#)のクラスライブラリを作成したのですが、 BCB(C++)での使用方法がわかりません。 BCBでプロジェクトに追加で、Dllを追加するのだろうと言うのは わかったのですが、 ソース上で、Dllをどのように呼び出したらよいのかわかりません。 Dllをプロジェクトに追加する以前に、何かしなくてはならないことがあるのでしょうか? よろしくお願いいたします。

  • C#からCで作成したDLLにステップインできません

    C#からCで作成したDLLにステップインできません。 対策としては以下を行いましたが、ステップインできませんでした。他の対策を知っていたら教えてください! 環境:C#, CともにVS2008, Windows XP professional ・プロジェクトのプロパティのデバッグタブで、「アンマネージのデバッグを~」にチェックを入れる。 ・完全なソースを必要とするのチェックをはずす。 ・C#のexeと同一DIRにdllと、pdbファイルを配置する。 ・全てデバッグでコンパイルする。

  • VC++.NETを使用したRS232c通信プログラム

    RS232c通信をVC++.NETを用いてPSoCマイコンと通信を行うGUIを作成しようとしています。PSoCとハイパーターミナルを用いた送受信の通信は成功しました。そこで受信ボタンをクリックすると、PSoCから送られてくる文字列を受信してエディットコントロールに表示させるという、ダイアログボックスベースで作成したアプリケーションを作っているんですが、文字列をうまく受信してくれません.現状は「・・・」といった文字をエディットコントローラに表示しており、実際は「welcome」という文字列をPSoCより受信しなければならないんですが・・・。 RS232c通信用のAPIは以下のサイトより使わせてもらっています↓http://7ujm.net/C++/Rs232c.h.html 自分が作成したプログラムはボタンをクリックすることで発生するイベントハンドラ関数内に以下のプログラムを書いているだけです。↓ void CMy090630Dlg::OnBnClickedButton1() { RS232c rs; rs.Connect();//ポートcom5と接続を開始する char w[100]; rs.Read_CRLF(w,100);//PSoCより文字列を受信 m_edit1.SetWindowText(w);//エディットコントロールに  受信文字列を表示させる } VC++をはじめたばかりの初心者で、言葉の間違いなどあるかもしれませんが、教えてください。

  • VC++でのRS232C通信をサポートしてくれるソフトは?

    VC++6.0を仕事で使うことになったのですが、 VC++でのRS232C通信をサポートしてくれるソフトがあれば教えてください。 VBAのEasyCommのようなソフトはあるのでしょうか?

  • 以前、「USB-RS232c変換コネクタを介して通信するC++のプログ

    以前、「USB-RS232c変換コネクタを介して通信するC++のプログラム」の質問をさせて頂いた者です。 http://okwave.jp/qa/q5502351.html 回答者様方のお陰で通信ができるようになったので、 VC++2005で、送信した文字列をそのまま返すプログラムを作成しました。 現状、通信等は正常に動作するのですが、 たまに受信文字列が正しく返ってこないことがあります。 不具合例)   送信文字列「test data」   受信文字列「test d」 といった具合で、途中までしか返ってきません。 この原因が分かる方、どうか教えてください。 通信は、こちらのサイトのクラスを使っています。 http://7ujm.net/C++/Rs232c.h.html よろしくお願いします。

  • VB 2008 でRS232C通信をしたい

    私はC言語を主に行なってきたのですが、この度VBを覚えたいと思い最新?のVB 2008(無料)をダウンロードしました。 BasicはN88程度の知識しかない為、とても苦戦しております。 RS232Cの通信をしたいのですが・・・・どうも分かりません。 インターネット情報のみで行なっていますがやはり無理っぽいです。Imports System.IO ?意味がわかりません。 やはり分かりやすい参考書が必要だと思います。 そこで、RS232C通信方法など詳しく載っているVB2008の参考書をご存知でしたら教えていただければと思います。 ちなみにVBは超ど素人です。 サンプルソースなどが載ってると、私としてはわかりやすいです。 宜しくお願いいたします。

  • C++/CLIで、アンマネージC++のDLLを使用する方法

    こんにちは。 C++/CLIのプログラムで、アンマネージC++のDLLを使用したいと考えています。 ネット上をいろいろ調べたのですが、具体的な手段がわかりません。 見よう見まねで以下のようにサンプルを作成したのですが、コンパイルすら通る状況になりません。 かなり基本的な問題がありそうで申し訳ないのですが、下記の問題点を教えていただけないでしょうか。 また、参考になりそうなサイトなどありましたら教えていただけると大変助かります。 ■アンマネージC++のDLL VC++6.0で、以下のように、単にデバッグ文字列を書き出すだけのDLL関数を作成しました。 (このDLLが使用できることは他のVC++6.0プロジェクトで確認済みです) /*-----Func.h-----*/ #ifndef __FUNC_H__ #define __FUNC_H__ AFX_EXT_CLASS void WINAPI ShowMessage(); #endif //__FUNC_H__ /*-----Func.cpp-----*/ #include "StdAfx.h" #include "Func.h" #include <stdio.h> void WINAPI ShowMessage() { CString str = "This is The Message from DLL Func!\n"; OutputDebugString(str); } ■C++/CLI でのDLL使用 Visual Studio2008にて、C++のCLRプロジェクトを作成して、以下のようにDLLを使用する準備を行いました。 1.ソリューションエクスプローラのヘッダフォルダに、Func.hを追加 2.プロジェクトのフォルダに、上記で作成したFuncのDLLとLIBファイルを置く。 3.プロジェクトの「プロパティ > C/C++ > プリプロセッサ > プリプロセッサの定義」に、"_AFXDLL"を追加 4.mainクラスのソースに以下を記述 /*----------*/ using namespace System; #include "Func.h" #using "ManagedDllApp.dll" int main() { ShowMessage(); return 0; } /*----------*/ この状態でコンパイルすると、 「エラー 3 error C2144: 構文エラー : 'void' は ';' によって先行されなければなりません。 d:\xxx\Func.h 4 Console 」等、Func.h周りで複数のエラーが出ます。 また、Func.hをインポートしないでコンパイルすると、 「エラー 3 fatal error C1113: #using が 'd:\xxx\manageddllapp.dll' で失敗しました。 」と、Dllでエラーが出ます。 よろしくお願いいたします。

専門家に質問してみよう