[英]Sending BMP image to serial port using C
我使用EDC mpos來獲取用戶簽名
現在,我將客戶簽名另存為“ sign.bmp”之類的圖像,然后將其發送到串行端口(我有C#應用程序來接收數據)。 因此我無法將圖像發送到串行端口。 這是我嘗試的:
void ReadImageToBuffer(char fileName[],char szTemp[])
{
FILE *file;
long fileLength;
char *buffer;
lcdCls();
SignatureHeaderBar();
lcdDisplay(0,3,DISP_CFONT|DISP_CLRLINE,"file name: %s",fileName);
lcdFlip();
kbGetKey();
// open file
file = fopen(fileName,"r");
if (!file)
{
lcdCls();
SignatureHeaderBar();
lcdDisplay(0,3,DISP_CFONT|DISP_CLRLINE,"Unable to open file %s",fileName);
lcdFlip();
kbGetKey();
}
else
{
lcdCls();
SignatureHeaderBar();
lcdDisplay(0,3,DISP_CFONT|DISP_CLRLINE,"file opened");
lcdFlip();
kbGetKey();
// Get file length
fseek(file, 0, SEEK_END); // Jumpt to the end of file
fileLength = ftell(file); // Get current byte offset
fseek(file, 0, SEEK_SET); // Jump back to begin at file
// allocate memory
buffer = (char *)malloc((fileLength+1)*sizeof(char));
if (!buffer)
{
lcdCls();
SignatureHeaderBar();
lcdDisplay(0,3,DISP_CFONT|DISP_CLRLINE,"Memory error");
lcdFlip();
kbGetKey();
}
else
{
// read file content
fread(buffer, fileLength, 1, file);
lcdCls();
SignatureHeaderBar();
lcdDisplay(0,3,DISP_CFONT|DISP_CLRLINE,"readed content");
lcdFlip();
kbGetKey();
}
// close file
fclose(file);
lcdCls();
SignatureHeaderBar();
lcdDisplay(0,3,DISP_CFONT|DISP_CLRLINE,"szTemp size %d",strlen(szTemp));
lcdDisplay(0,5,DISP_CFONT|DISP_CLRLINE,"buffer %d",buffer ? 1 : 0);
lcdDisplay(0,7,DISP_CFONT|DISP_CLRLINE,"signResult size %d",strlen(signResult));
lcdFlip();
kbGetKey();
//void ExternalSerialWrite(char dataByte[]);
ExternalSerialWrite(buffer);
}
}
我不是C開發人員,我只懂基本的C,並且在互聯網上搜尋“如何...”
所以我的問題是如何將圖像發送到串行端口(就我而言,我認為我無法以字節為單位獲取圖像數據)
這是我的ExternalSerialWrite()
void ExternalSerialWrite(char dataByte[])
{
write(*uartIfd, dataByte, strlen(dataByte));
}
圖像是二進制文件。
因此,首先您需要這樣打開它。 其次,由於數據是任何值的任意字節,包括嵌入的零(恰好等於字符串null終止符),因此不能使用諸如strlen
字符串函數。
您需要跟蹤讀取的數據大小(在分配時不應包括您添加的+1
),並將該大小作為參數傳遞給ExternalSerialWrite
函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.