CODE128怎么生成打印? 我在网上下载了Visual C++ 打印编程技术与工程实践中条形码打印的代码,打印出来的条码识别不了。各位大侠帮帮我看有什么问题。源码在http://download.csdn.net/detail/wewaa/3798946,请用vs2008编译之。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // Code128.cpp: implementation of the CCode128 class.////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include "barcode.h"#include "Code128.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////CCode128::CCode128(){}CCode128::~CCode128(){}int CCode128::Code128BVerify(LPCSTR text){ if (text[0] == '\0') return -1; while (*text && *text>=32 && !(*text&0x80)) text++; if (*text) return -1; // 不是合法的字符 return 0; }int CCode128::Code128BEncode(LPSTR text, LPSTR partial){ unsigned i; int code,checksum=0; char *str=text; if(!partial) { return -1; } //首字符为START_B(HEAD) strcat(partial,code128set[START_B]); //首字符也要加到校验和中去 checksum+=START_B; //如果字符串为空,则返回 if(!str) { delete partial; return -1; } for(i=0;i<strlen(str);i++) { if ( str[i] < 32 || (str[i] & 0x80)) { //如为非法字符,则返回 free(partial); return -1; } code = str[i]-32; strcat(partial, code128set[code]); //校验和为:first * 1 + second * 2 + third * 3... checksum += code * (i+1); } //最终校验和为除以103所得的余数 checksum%=103; //将校验和加入partial strcat(partial,code128set[checksum]); //加入STOP结尾字符 strcat(partial,code128set[STOP]); return 0;}int CCode128::Code128CVerify(LPCSTR text){ if (text[0] == '\0') return -1; //字符数目必须为偶数个 if (strlen(text)%2) return -1; //所有字符必须都是数字 for (; *text; text++) if (!isdigit(*text)) return -1; return 0;}int CCode128::Code128CEncode(LPSTR text, LPSTR partial){ int i,code,checksum=0; char *str=text; if(!partial) { return -1; } //首字符为START_C(HEAD) strcat(partial,code128set[START_C]); //首字符也要加到校验和中去 checksum+=START_C; //如果字符串为空,则返回 if(!str) { delete partial; return -1; } for(i=0;str[i];i+=2) { if(!isdigit(str[i])||!isdigit(str[i+1])) { free(partial); return -1; } code=(str[i]-'0')*10+str[i+1]-'0'; strcat(partial,code128set[code]); //校验和为:first * 1 + second * 2 + third * 3... checksum+=code*(i/2+1); } //最终校验和为除以103所得的余数 checksum%=103; //将校验和加入partial strcat(partial,code128set[checksum]); //加入STOP结尾字符 strcat(partial,code128set[STOP]); return 0;}int CCode128::Code128AEncode(LPSTR text, LPSTR partial){ unsigned i; int code,checksum=0; char *str=text; //分配空间 if(!partial) { return -1; } //首字符为START_A(HEAD) strcat(partial,code128set[START_A]); //首字符也要加到校验和中去 checksum+=START_A; //如果字符串为空,则返回 if(!str) { delete partial; return -1; } for(i=0;i<strlen(str);i++) { if ( str[i] > 95 && !(str[i] & 0x80)) { //如为非法字符,则返回 free(partial); return -1; } if (str[i]<32) { code=str[i]+64; } else if((str[i]>=32)&&(str[i]<=95)) { code=str[i]-32; } else if(str[i]==0xc1) { code=FUNC_1; } else if(str[i]==0xc2) { code=FUNC_2; } else if(str[i]==0xc3) { code=FUNC_3; } else if(str[i]==0xc4) { code=CODE_A; } else if(str[i]==0x80) { code=64; } strcat(partial, code128set[code]); //校验和为:first * 1 + second * 2 + third * 3... checksum += code * (i+1); } //最终校验和为除以103所得的余数 checksum%=103; //将校验和加入partial strcat(partial,code128set[checksum]); //加入STOP结尾字符 strcat(partial,code128set[STOP]); return 0;}int CCode128::Code128AVerify(LPCSTR text){ while (*text&&(*text<=95 ||(*text&0x80))) text++; if (*text) return -1; // 不是合法的字符 return 0;} 急寻求助啊,使用Visual Studio 2008时,属性窗口的一些功能按钮突然不见了,怎么办?! Rich Edit如何响应键盘消息 MFC做编译器有关的小问题,请高手指教? CISCO2600路由器怎么设置才能让他能转发 “组播数据” 呢?? 一个关于线性代数的问题,且非编程问题,急!!!!!!!!!!!!! 对话框程序中的线程问题 程序移植,有多大的工作量??? 请问 vc 中装插件产生的 工具栏怎么去掉呀?(如 visual assist) 如何向服务器端口发送数据包 一个小娱乐,无关编程,各位看看有没有错误。 directshow显示两个窗口 客户端与服务端的消息记录同步?
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "barcode.h"
#include "Code128.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////CCode128::CCode128()
{}CCode128::~CCode128()
{}int CCode128::Code128BVerify(LPCSTR text)
{
if (text[0] == '\0')
return -1; while (*text && *text>=32 && !(*text&0x80))
text++; if (*text)
return -1; // 不是合法的字符 return 0;
}int CCode128::Code128BEncode(LPSTR text, LPSTR partial)
{
unsigned i;
int code,checksum=0;
char *str=text;
if(!partial)
{
return -1;
}
//首字符为START_B(HEAD)
strcat(partial,code128set[START_B]);
//首字符也要加到校验和中去
checksum+=START_B; //如果字符串为空,则返回
if(!str)
{
delete partial;
return -1;
} for(i=0;i<strlen(str);i++)
{
if ( str[i] < 32 || (str[i] & 0x80))
{
//如为非法字符,则返回
free(partial);
return -1;
}
code = str[i]-32;
strcat(partial, code128set[code]);
//校验和为:first * 1 + second * 2 + third * 3...
checksum += code * (i+1);
} //最终校验和为除以103所得的余数
checksum%=103;
//将校验和加入partial
strcat(partial,code128set[checksum]);
//加入STOP结尾字符
strcat(partial,code128set[STOP]); return 0;
}int CCode128::Code128CVerify(LPCSTR text)
{
if (text[0] == '\0')
return -1; //字符数目必须为偶数个
if (strlen(text)%2)
return -1; //所有字符必须都是数字
for (; *text; text++)
if (!isdigit(*text))
return -1; return 0;
}int CCode128::Code128CEncode(LPSTR text, LPSTR partial)
{
int i,code,checksum=0;
char *str=text;
if(!partial)
{
return -1;
} //首字符为START_C(HEAD)
strcat(partial,code128set[START_C]);
//首字符也要加到校验和中去
checksum+=START_C; //如果字符串为空,则返回
if(!str)
{
delete partial;
return -1;
} for(i=0;str[i];i+=2)
{
if(!isdigit(str[i])||!isdigit(str[i+1]))
{
free(partial);
return -1;
}
code=(str[i]-'0')*10+str[i+1]-'0';
strcat(partial,code128set[code]);
//校验和为:first * 1 + second * 2 + third * 3...
checksum+=code*(i/2+1);
} //最终校验和为除以103所得的余数
checksum%=103;
//将校验和加入partial
strcat(partial,code128set[checksum]);
//加入STOP结尾字符
strcat(partial,code128set[STOP]); return 0;
}int CCode128::Code128AEncode(LPSTR text, LPSTR partial)
{
unsigned i;
int code,checksum=0;
char *str=text;
//分配空间
if(!partial)
{
return -1;
} //首字符为START_A(HEAD)
strcat(partial,code128set[START_A]);
//首字符也要加到校验和中去
checksum+=START_A; //如果字符串为空,则返回
if(!str)
{
delete partial;
return -1;
}
for(i=0;i<strlen(str);i++)
{
if ( str[i] > 95 && !(str[i] & 0x80))
{
//如为非法字符,则返回
free(partial);
return -1;
}
if (str[i]<32)
{
code=str[i]+64;
}
else if((str[i]>=32)&&(str[i]<=95))
{
code=str[i]-32;
}
else if(str[i]==0xc1)
{
code=FUNC_1;
}
else if(str[i]==0xc2)
{
code=FUNC_2;
}
else if(str[i]==0xc3)
{
code=FUNC_3;
}
else if(str[i]==0xc4)
{
code=CODE_A;
}
else if(str[i]==0x80)
{
code=64;
} strcat(partial, code128set[code]);
//校验和为:first * 1 + second * 2 + third * 3...
checksum += code * (i+1);
} //最终校验和为除以103所得的余数
checksum%=103;
//将校验和加入partial
strcat(partial,code128set[checksum]);
//加入STOP结尾字符
strcat(partial,code128set[STOP]); return 0;
}int CCode128::Code128AVerify(LPCSTR text)
{
while (*text&&(*text<=95 ||(*text&0x80)))
text++; if (*text)
return -1; // 不是合法的字符 return 0;
}