c123nandy 2015-09-24 01:24 采纳率: 0%
浏览 2154

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
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2015-09-24 01:30
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问