最近弄一个串口打印的项目,我一直是用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
}