初學求高手幫忙
做一個儀表控制的程式,實作在PC上生成一個波表(保存到.TXT或.raf中),然后下載到儀表記憶體。儀表端的SCPI命令是:DATA:VOLETILE <FLAG>,<資料長度><波表二進制資料>。問題是在VC中怎么生成波表,又怎么保存和讀取到二進制資料塊中?求高手代碼,謝謝
uj5u.com熱心網友回復:
能拿出一個可用的.TXT波表檔案用WinHex軟體打開并截圖嗎?uj5u.com熱心網友回復:
波表就是個單列多行的資料列uj5u.com熱心網友回復:
僅供參考:#include <stdio.h>
#include <string.h>
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() {
char str[1024];
int flag=1;
int datalen=3;
int data[3]={1,2,3};
int i,L;
L=sprintf(str,"DATA:VOLETILE%d,%d",flag,datalen);
for (i=0;i<datalen;i++) memcpy(str+L+i*sizeof(int),&data[i],sizeof(int));
HexDump(str,L+3*sizeof(int),(int)str);
return 0;
}
//0012fb70 - 44 41 54 41 3a 56 4f 4c 45 54 49 4c 45 31 2c 33 DATA:VOLETILE1,3
//0012fb80 - 01 00 00 00 02 00 00 00 03 00 00 00 ............
//
uj5u.com熱心網友回復:
用VC 怎么實作,顯示到對話框中的EDIT或RICHEDIT控制元件上?代碼,謝謝uj5u.com熱心網友回復:
printf改為sprintf轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/124016.html
標籤:硬件/系統
上一篇:c++ MFC除錯出錯
下一篇:VC實作HEX捕獲
