65,209
社区成员
发帖
与我相关
我的任务
分享
int main()
{
writedata("77 04 00 04 08 0d 0a", 20);
//上面的内容要写入串口设备,是以16进制写入的,请帮我看一下下面的转换哪里出错了?写入后就不显示,调试模式就崩溃
return 1;
}
int C_dev::writedata(char* _data, int _datalen)//写入设备
{
char tempC[20];
char tempH [7] = {'\0'};
int sendH[7];
int i = 0, j = 0;
sprintf(tempC, _data, _datalen);
sscanf(tempC, "%02x %02x %02x %02x %02x %02x %02x",
sendH, sendH+1, sendH+2, sendH+3, sendH+4, sendH+5, sendH+6);
for (i = 0; i < 7; i++)
{
tempH[i] = sendH[i];
}
j = CComm::PortSend(tempH, (sizeof(char)*7));//写入com口(此处调用了一个网上找的串口读写库,没有粘贴完整代码)
if (0 == j)
{
printf("Portsend error!\r\n");
}
return 1;
}
int C_dev::CheckData(char* _data, int _datalen)
{
if(!_datalen)
return 0;
int i=0, j=0;
char tempH[20] = {0};
int sendH[20];
char dataC[15] = {0};
char signX = '+';
char signY = '+';
TIP_HEAD* ntip = NULL;
bool res = false;
memcpy(inbuff, _data, _datalen);
if((0x77 == inbuff[0]) && (0xd == inbuff[1]))
{
for(i = 0; i < _datalen; i++)
{
sendH[i] = inbuff[i];
}
if (0x00 == inbuff[4])
{
signX = '-';
}
else
{
signX = '+';
}
if (0x00 == inbuff[7])
{
signY = '-';
}
else
{
signY = '+';
}
sprintf(dataC, "X%c%02x.%02x Y%c%02x.%02x",
signX, inbuff[5], inbuff[6], signY,inbuff[8], inbuff[9]);
printf("%s\r\n", dataC);
}#include <stdio.h>
#include <string.h>
FILE *f;
char buffer[4096];
int r,a;
void HexDump(char *buf,int len,int addr) {
int i,j,k;
char binstr[80];
for (i=0;i<len;i++) {
if (0==(i%16)) {
sprintf(binstr,"%08x -",i+addr);
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
} else if (15==(i%16)) {
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
sprintf(binstr,"%s ",binstr);
for (j=i-15;j<=i;j++) {
sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
}
printf("%s\n",binstr);
} else {
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
}
}
if (0!=(i%16)) {
k=16-(i%16);
for (j=0;j<k;j++) {
sprintf(binstr,"%s ",binstr);
}
sprintf(binstr,"%s ",binstr);
k=16-k;
for (j=i-k;j<i;j++) {
sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
}
printf("%s\n",binstr);
}
}
int main(int argc,char **argv) {
if (argc<2) {
fprintf(stderr,"Usage: %s filename.ext\n",argv[0]);
return 2;
}
f=fopen(argv[1],"rb");
if (NULL==f) {
fprintf(stderr,"Can not open file [%s]!\n",argv[1]);
return 1;
}
a=0;
while (1) {
r=fread(buffer,1,4096,f);
HexDump(buffer,r,a);
a+=r;
if (r<4096) break;
}
fclose(f);
return 0;
}