串口 通信
http://outofmemory.cn/code-snippet/12300/ESC-POS-type-example
ESC POS打印例子
#include <windows.h>
#include <string>
#include <IOSTREAM>
using namespace std;
typedef struct DataInfo
{
string Port; //串口端口号
int BawdRate;//波特率
int DataBits; //数据位
char Parity; //校验位
int ReceiveBuffer; //缓冲区
int StopBits;//停止位
}PrintDevice;
int WriteData(string meg);
int InitPort(PrintDevice &device);
void InitializeDevicePar(PrintDevice &device);
HANDLE hPort=NULL; //句柄
int main()
{
PrintDevice device;
InitializeDevicePar(device); //初始化打印机参数
InitPort(device); //初始化打印机端口
string s;
////////////////////////////打印头信息开始//////////////////////////////////
//设置中文粗体 + 四倍大小, "FS ! n", n = 4 + 8+128,
s= "\\x1C\\x21\\x8C";
WriteData(s);
s="商店-上海鼎捷\\x0A";
WriteData(s); //打印
//取消中文放大设置
DWORD iBytesLength;
char chSetCode[] = "\\x1C\\x21\\x0";
WriteFile(hPort, chSetCode, (DWORD)3L, &iBytesLength, NULL);
//////////////////////////打印头信息结束///////////////////////////////////////
//////////////////////////打印商品开始////////////////////////////////////////
s="山东苹果\\t4.00\\t2x\\t8.00元\\x0A";
WriteData(s); //打印
s="福建橘子\\t5.00\\t3x\\t15.00元\\x0A";
WriteData(s); //打印
s="\\x0A";
WriteData(s); //打印
////////////////////////////打印商品结束//////////////////////////////////////
s="小计:23.00元\\x0A";
WriteData(s); //打印
//进纸到切纸位置,再切纸,"GS V m n", n=需要多进的行数
s= "\\x1D\\x56\\x41\\x01"; //m=65 65是全切,66是半切, n=1 0<=n<=255
WriteData(s); //打印
CloseHandle(hPort);//关闭端口
return 0;
}
void InitializeDevicePar(PrintDevice &device)
{
device.Port="COM4";
device.BawdRate=9600;
device.DataBits=8;
device.StopBits=ONESTOPBIT;
device.Parity=NOPARITY; //NONE
device.ReceiveBuffer=256;
}
int InitPort(PrintDevice &device)
{
hPort = CreateFile(device.Port.c_str(), GENERIC_READ | GENERIC_WRITE,
0, NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL );
if (hPort == INVALID_HANDLE_VALUE)
{ // 打开端口失败
return false;
}
else
{
//设置端口缓冲
SetupComm(hPort, 1024, 1024);
// 设定通讯端口超时参数
COMMTIMEOUTS tmouts;
tmouts.ReadIntervalTimeout = 100;
tmouts.ReadTotalTimeoutMultiplier = 100;
tmouts.ReadTotalTimeoutConstant = 100;
tmouts.WriteTotalTimeoutConstant = 100;
tmouts.WriteTotalTimeoutMultiplier = 100;
SetCommTimeouts(hPort, &tmouts);
//设定通讯端口通讯参数
DCB dcb;
BOOL bol = TRUE;
//dcb.DCBlength = sizeof(dcb);
bol=GetCommState(hPort, &dcb);
dcb.BaudRate = device.BawdRate;
dcb.ByteSize =device.DataBits;
dcb.StopBits = device.StopBits;
dcb.Parity = device.Parity;
bol = SetCommState(hPort, &dcb); //配置串口
// 清除通讯端口缓存
PurgeComm(hPort, PURGE_TXCLEAR | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_RXABORT);
// 初始化重叠IO对象
OVERLAPPED m_OverlappedRead;
OVERLAPPED m_OverlappedWrite;
HANDLE m_hStopCommEvent;
HANDLE m_hDataReady;
memset(&m_OverlappedRead, 0, sizeof(OVERLAPPED));
m_OverlappedRead.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
memset(&m_OverlappedWrite, 0, sizeof(OVERLAPPED));
m_OverlappedWrite.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
// 初始化事件对象
m_hStopCommEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
m_hDataReady = CreateEvent(NULL, FALSE, FALSE, NULL);
//初始化打印ESC @
DWORD iBytesLength;
char chInitCode[] = "\\x0D\\x1B\\x40";
WriteFile(hPort, chInitCode, (DWORD)3L, &iBytesLength, NULL);
}
return 0;
}
int WriteData(string meg)
{
DWORD dwWrite;
WriteFile(hPort, meg.c_str(), (DWORD)meg.length(), &dwWrite, NULL);
return 0;
}
//该片段来自于http://outofmemory.cn
热敏打印机打印二维码图片
https://blog.csdn.net/sdvch/article/details/45079375
GSMMODEM.cs源代码,串口调试程序
http://www.inextera.com/forum.php?mod=viewthread&tid=40
C# 写的
书名:《C/C++串口通信典型应用实例编程实践》(电子工业出版社.曹卫杉)
PDF扫描版,全书共分10章,共316页。
内容介绍
本书从工程应用的角度出发,对目前流行的三种不同类型的C/C++语言(包括C++ Builder、Visual C++和LabWindows/CVI)开发串口通信(也称为串行通信)程序进行了阐述。
基础篇简单介绍了C/C++语言实现串口通信需要的基本知识;应用篇通过PC与PC、PC与单片机、PC与智能仪器、PC与PLC、PC与GSM短信模块、PC与远程I/O模块等典型应用实例,详细介绍了C/C++语言利用MSComm控件、API函数实现串口通信的程序设计方法。每个实例的设计任务同时采用C++ Builder、Visual C++和Labgrmdows/CVI实现。
本书内容丰富,结构清晰,文字叙述深入浅出,通俗易懂,以实践应用为主,突出程序设计,重在功能实现,有较强的实用性和可操作性。
本书可作为高等院校计算机应用、测控技术、机电一体化、自动化等专业的研究生、本科生以及计算机测控系统研发的工程技术人员等学习C/C++串口通信编程技术的参考书。
Win32串口API
https://www.cnblogs.com/xi52qian/archive/2011/08/30/2159675.html
深入浅出VC++串口编程之基于Win32 API
http://dev.yesky.com/401/2308901.shtml
Win32串行通信中文版(Serial Communications In Win32)
https://blog.csdn.net/zcube/article/details/8591972