VC++如何调用C#编写的串口驱动 DLL

最近弄一个串口打印的项目,我一直是用VC++进行开发的,c#没用过,但是对方提供的打印机的DEMO却是C#的例程,本来想着DLL是跨语言的,应该没什么问题,但是我用vc++编写了一个测试程序,确没有任何数据输出,很简单的例程,我按流程在上面加了打开串口,设置串口,发送数据,关闭串口。这几步都是用的现成的dll里面的函数,他把串口的数据操作也封装起来了,然后我就想到,在c#中是可以直接用库函数对串口读写,是不是因为这个原因,导致我在vc++中不能使用?

里面所有的都是用DLL提供的函数直接操作串口,但是就是没有串口数据输出。

注:打印机提供的C#的例程DEMO是可以正常串口打印的。

求大神解答。下面是我在vc++的窗初始化函数里写的流程。

 BOOL CTestDll2008Dlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);         // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    if (LoadPrintLib() == FALSE)
    {
        AfxMessageBox(_T("printdll.dll not found"));
        return FALSE;
    }

    ASCII_OpenPrinter(3);

    //ComState cs;
    //cs.dwBaudRate = 9600;
    //cs.Parity = NOPARITY;
    //cs.StopBits = ONESTOPBIT;

    DCB dcb;
    dcb.BaudRate = CBR_9600;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.StopBits = ONESTOPBIT;

    ASCII_SetComPortParam(dcb);

    char pBuff[3] = { 0x1b,0x57,0x02};
    ASCII_DirectData(pBuff,3);
    char pBuff1[] = {"hello world"};
    ASCII_DirectData(pBuff1,10);
    pBuff[2] = 0x01;
    ASCII_DirectData(pBuff,3);
    ASCII_DirectData(pBuff1,10);

    ASCII_ClosePrinter();
    UnloadPrintLib();

    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
0

1个回答

用串口调试助手,看你的程序和C#的发送接收的有什么不同。检查你的波特率、校验、同步等设置,端口号

1
c123nANDY
c123nandy 我用VC++写的程序就没有任何输出,而且我看了一下,我用的COM3,但是当运行另外一个COM3的串口时,并没有出现串口被占用的情况,说明串口都没有被打开,所以我怀疑是不是C#对串口使用库函数进行操作的封装,在VC++是不是用不了
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
【原】基于vc 6.0开发dll动态链接库和测试实例--串口操作
【原】基于vc 6.0开发dll动态链接库和测试实例--串口操作   公司突然下达指令,让我这个从没用过vc的人开发一个接口函数,对接方又比较蛋疼,指定要求将接口封装到dll中进行使用,以下是使用过程中步骤说明以及一点自己的心得 (感谢网上所有开源,讲解的兄弟姐妹以及各位大牛老师们,分享快乐!)   1 制作简单的dll库   1)使用vc 6.0创建一个dll实例选择win32 d
用VC开发串口通信dll控件
VC串口通信技术网《VC串口上位机编程方法简介》介绍了串口编程的常见方法,其中就有使用串口dll控件的方法,dll是一种动态链接库,使用起来非常方便。    本文利用VC编程工具,对Windows提供的API函数进行封装,实现了一个串行通信动态链接库dll的完整实例,实例既给出了DLL函数的编写方法,又包括一份用其它编程工具(VB)对此DLL进行声明及调用的范例。为了使大家能看得懂,本例作了简化。
使用API函数实现的串口通讯DLL(含源码VC++)
使用API函数实现的串口通讯DLL,使用VC++编写,可以单独使用,注意看“使用说明.txt”
制作dll文件,最简单的VC串口通信。
用的头疼的vc6,还要在头疼的windowXP下执行,其实dll文件很简单。
VC2015调用C#的DLL的范例
VC++2015调用C#2015编写的DLL文件的范例,包含VC,C#的源代码;
VC/C#调用delphi写的dll, 演示如何进行类的传递并callback调用方的代码
VC调用Delphi DLL,并递交struct类型的参数 ,并于dll里面callback VC结构体里面的方法.
vb调用c#编写的串口DLL文件(vb源码 C#源码)
vb调用c#编写的串口DLL文件(vb源码 C#源码)
VC调用C#生成的类库DLL方法
下载 示例代码            最新因为工作项目上的需求,VC需要调用C#开发的DLL,本来以为是很简单的事,可实际不是这样,因为C#编译出来的DLL与VC、VB、Delphi等这些工具编译出来的完全不一样,C#生成的DLL不是独立运行的程序,是某个程序的一个部分,只能由所属的程序(Microsoft .NET Framework )调用,Visual C#编译器生成的托管代码虽然
上位机开发--C#调用C做的库dll
void Swap(int* a, int* b) {     int c = *a;     *a = *b;     *b = c; } https://www.cnblogs.com/notnolyblogs/p/6015933.html 错误1 Swap首字母大写! 错误2 原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。 参考:https://blog.csdn.net...
VC++ 调用 C#生成DLL的两种方法
今年在C++调用对方用C#写的DLL时,遇到托管和非托管的问题。      原帖:      http://topic.csdn.net/u/20110916/12/fcf63501-45ef-46d9-92d1-6ffa91086a80.html      以及参考文章:       VisualC、Delphi或者VB等编程语言来编写的DLL文件,在编译完成以后,产生D
如何利用MFC编写的.exe调用C#编写的dll动态库
如何利用MFC编写的.exe调用C#编写的dll动态库     由于项目的需要,将C#编写的dll动态库运用到MFC编写的.exe程序中,具体运用步骤如下所示: 一、使用/clr方式来编译MFC文件,具体操作主要是更改MFC所在的项目属性:     1、打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”。     2、展开“配置属性”旁边的节
转载:QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)
https://www.cnblogs.com/feiyangqingyun/p/3720777.html
vs2010下V C++调用C#编写的dll时可能遇到的问题
最近编写C++调用C#编写的dll时,碰到诸多问题,主要原因是在编写C#的dll时还调用了其它的dll动态链接库,所以比较复杂。 在按照正规步骤编写完C#  dll之后,觉得万事大吉了,(因为单纯调试dll时并未任何异常和错误),后来才发现后面调用的时候有个细节被忽略了(编译平台)。 首先编写dll的时候   添加dll:点击项目属性,添加引用----------》  #using
工业级串口编程利器:Pcomm lite 串口库介绍 (Pcomm.dll)
pcomm.dll库介绍
vc++ 串口操作动态库dll及测试程序
VC++6.0封装串口操作dll。一共是四个接口函数,打开串口,关闭串口,读取串口数据,串口写入数据。并附带相应的测试程序
VC调用C#的COM组件(DLL)
假设要进行二次开发的程序为 A.exe,要增加的功能使用增加DLL的方法来完成,设为Cdll.DLL,其中含有A、B、C等方法。       其中的方法A要用到C#类库Csharp.DLL中的方法A。要完成这个任务,参考网络上的各种方法与代码,总结其步骤如下:先用VS2008 C#类库项目写成含有A方法的DLL,并设置项目属性以进行COM的封装,然后用VC6 等写C代码进行调用。一、生成C#类库 Csharp.DLL(1)在Visual Studio 2008 中创建C#的类库项目 CSharp(2)实现的
Delphi中调用VC编写的DLL内对象
Delphi以其独特的面向控件的开发方式、强大的数据库功能以及快速的编译技术,使得它自发布起即格外引人注意。随着Delphi 3提供丰富的Internet应用,Delphi日益成为最重要的软件开发工具之一, 它吸引了许多原Visual Basic、Foxpro、dBase甚至C++的程序员,而这些程序员使用Delphi时需要解决的一个重要问题就是怎样利用他们原有的代码。本文将介绍Delphi与C+
可供VC调用的QT编写的界面DLL方法
可供VC调用的QT编写的界面DLL方法http://www.cnblogs.com/jiangu66/p/3180359.html   一般直接编写的QT动态库是无法被Windows下的VC6.0等调用的。 如下步骤   第一步:必须要在QT界面库源码下包含qtwinmigrate的源码包和库,网上可下载到。   第二步:在QT的proc文件中添加以下的一行 in
Labwindows/CVI程序调用C#生成的Dll文件
最近需要在一个CVI程序里加入语音播报功能,由于CVI是基于C语言的编程,实现播报功能无从下手,而C#封装了库函数,可以直接调用,实现起来方便很多。下面重点记录一下CVI程序调用C#生成的Dll文件的过程。 首先,在vs中建立一个类库,编写含有语音播报功能的方法,并将其生成Dll文件。 语音播报功能编写见:http://www.cnblogs.com/leep2007/archive/2012
C++如何调用C#编写的DLL
由于C#编绎出来的DLL不是计算机所能直接识别的二进制指令码,需要CLS进行再解释,说到这,我想有些朋友应该知道C#项目需要引用C++编写的DLL时,可以直接引用DLLMPORT来实现调用,而反向的话,C++项目却不能简单靠引用来使用C#编写的DLL。由于C++项目默认配置是没有公共语言运行支持的,因此我们需要更改一些配置,来实现C++项目对C#编写DLL的调用。具体如何操作,我会在接下来的文章中
C#程序调用VC++程序动态库
C#程序调用VC++程序动态库,使得不同语言之间的程序调用更为便捷
Vc++制作通用dll动态链接库并调用
*step1* 文件-新建-vc++-win32-dll *step2* 头文件声明省略, cpp源码: #include "stdafx.h" #include "mydll.h&amp
VC 调用 MinGW 生成的dll
首先,如何dll 中导出了C++的类,那么就不要折腾了。不同的编译器编译出来的C++代码是不保证通用的。如果dll中只是一些C 函数,那么是可以互相调用的。   MinGW 生成dll时即使生成了 .a 文件也是不能用到VC 上的(至少我用的VC2010版本是不行了,表现为生成的程序 Debug模式下可以运行,但是Release 模式下却无法运行)。   如果生成dll时也生成的def文件
C# 调用VC Dll (传出参数char*)
vc dll 中的声明 HCLISDK int   __stdcall Fuck(char* szFuck);   其中char* szFuck是从dll内传出的参数。 则在C#中的声明是         [DllImport("HCliSdk.dll", EntryPoint = "Fuck")]         public static extern int Fuck(Strin
VC++编写DLL导出函数及其调用方法
实例在Visual Studio 2008 SP1 IDE中如何创建、编写和导出DLL,以及如何调用生成的DLL。
Golang编写dll给C++调用
最近楼主学习了go语言,发现确实很方便,而且运行速度也不慢,官方自带的库也很好用,但是就是没有图形界面,所以就想使用C++写gui,然后网络什么的调用golang,于是开始尝试使用C++调用golang的dll楼主系统是win10 64位的,使用MINGW编译C++,gcc版本64位的4.8.2,golang版本是64位的1.10.1,如果生成dll有问题可以升级下go版本首先写一个main.go...
VC++ 和 C# 互相调用 DLL 的 全部可行方法
VC++ 和 C# 互相调用 DLL 的 全部可行方法,全面解决方案。
C#+.NET中调用VB编写的DLL代码事例
转自:http://www.taotechinfo.com/collect/2010222/n68565463.html http://www.cnblogs.com/Tmouse/archive/2010/04/15/1712819.html .NET中如何调用VB6编写的
c/c++中_stdcall与dll动态调用
1._stdcall在动态dll调用中的注意事项 为了用vc写的dll能被其它语言的写的程序使用,即实现跨语言。我们在dll的函数调用约定中使用__stdcall . 但当用GetProcAddress调用是却失败了. 用dumpbin工具查看导出的函数名可以看到:导出的函数名确实为_mygetGrad@20 所以我们要阻止导出的函数名被编译器修改,方法就是使用de
VC++创建DLL工程最简单实例
VC++创建DLL工程最简单实例 1.文件-》新建 -》 选择 Win32 Dynamic-Link Library -》 工程名称输入 MyDLL -》确定 2.向导1 选择《一个可以导出某些符号的DLL工程》 -》 提示创建工程骨架 点击确定 3.清空MyDLL.cpp和MyDLL.h文件 4.修改MyDll.cpp内容如下: #include "stdafx.h" #incl
VC++ .net 串口操作(简单的上位机串口操作)
因为我一直使用的是嵌入式芯片,比较擅长C,一直想写点j
VB中调用VC++开发的DLL
转自:http://lanshanlhy.blog.163.com/blog/static/302294762010112832031218/ 再谈在VB中调用VC++开发的DLL  再谈在VB中调用VC++开发的DLL    近日开发一个程序,用到动态链接库,在VB中调用时遇到了一些问题。我查了一些资料,也看了一下CSDN上的文章,感觉这些文章对在VB中调用VC++开发的DLL这一
免注册调用大漠插件 DmReg.dll
VC免注册调用大漠插件用到的DLL,大漠注册插件 DmReg.dll
win32 串口通信 同步方式 事件驱动
《The Windows Serial Port Programming Handbook.pdf》 第三章 的例子 可以参考一下 咱相应的修改 SimpleCOM.cpp /*********************************************************************************** * NAME : SimpleCOM.cpp ...
C#委托实现C++ Dll中的回调函数
很多的Dll都是C和C++写的,那么如果C#想要调用Dll中的函数怎么办,尤其是Dll函数其中一个参数是函数指针的,即里面有回掉函数的用C#怎么实现? C中的回掉函数在C#中有中特殊的处理方式叫委托,即要实现的回掉函数委托给另一个和它返回值类型以及函数参数类型、数量一样的方法来实现。 一、新建项目Visual C++  Win32控制台应用,工程名为CcreateDll,解决方案名为
在VS2008环境下编写C语言DLL,并在C++和C#项目下调用
一、编写DLL     a)文件--打开--新建项目--Win32,右侧Win32项目,填写好项目名称,点击“下一步”,        应用程序类型选择:“DLL(D)”,附加选项:空项目(E),然后完成。     b)编写头文件(edrlib.h): #ifdef __cplusplus    #define EXPORT extern "C" __declsp
C#调用C++写的DLL的简单示例
首先声明,本人两年没碰C++了。只是现在突然要用到,而且是要用C#来调用C++写的DLL,着实让我头疼,在网上摸索了两天,终于找到了适合我的方式。这里我们不管他什么库啊,什么原理了,能用起来就ok了。 也就是说,本文适合的是和我一样之前没有用过C#来调用C++写的dll的新手。 我用的工具是VS2011(非本人情愿,我更愿意用08或10)。 首先我们新建一个DLL工程。这个过程,我当时就摸索
VC编写DLL几种方法的简介
  动态连接库最大的特点就是能节省磁盘空间.当多个进程共享同一个DLL的时候,内存中只有一个DLL的代码.通过映射来使各个进程得以调用.1.用VC建立一个WIN32 DLL我们利用VC编写DLL有几种方法.如果用VC建立一个WIN32 DLL 工程.那这个工程就应该只导出C++的类或全局变量.和全局函数.方法就是在CPP文件中编写你的代码,为每个需要导出的元素进行导出办法是增加如下语句
VS2010编写动态链接库DLL及单元测试用例,调用DLL测试正确性
本文将创建一个简单的动态链接库,并编写一个应用台控制程序使用该动态链接库,该动态链接库为“JAVA调用动态链接库DLL之JNative学习”中使用的DLL,只是项目及文件名称不同。创建动态链接库项目:1、打开Microsoft Visual Studio 2010,选择文件->新建->项目。2、在新建项目窗口中选择其他语言->Visual C++->Win32。3、选择Win32 项目,设置名称:
串口点亮测试-C#开发(无引用dll)
连接通讯板卡(继电器),控制警报灯,传送带等等
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 如何编写区块链 区块链如何编写