问题描述
- 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] = { 0x1b0x570x02}; ASCII_DirectData(pBuff3); char pBuff1[] = {""hello world""}; ASCII_DirectData(pBuff110); pBuff[2] = 0x01; ASCII_DirectData(pBuff3); ASCII_DirectData(pBuff110); ASCII_ClosePrinter(); UnloadPrintLib(); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE}
解决方案
用串口调试助手,看你的程序和C#的发送接收的有什么不同。检查你的波特率、校验、同步等设置,端口号
解决方案二:
在C#.net中调用VC 6.0编写的DLL文件
在C#中调用VC编写的dll库
在C#中调用VC编写的dll库
时间: 2025-01-20 14:12:37