- 論壇徽章:
- 0
|
還是個初學(xué)arm和linux的新人,現(xiàn)在有個問題弄了好久都沒有解決的方法,請各位老師指點(diǎn)一下.
我在arm板linux系統(tǒng)下做圖片數(shù)據(jù)傳輸(網(wǎng)絡(luò)上的源碼我修改的),程序運(yùn)行沒有錯誤提示,現(xiàn)在我發(fā)送一副圖片往串口,串口返回的字節(jié)數(shù)和我的圖片的字節(jié)數(shù)相同,初始化串口的時候c_cc[vtime]等兩個屬性都設(shè)0,現(xiàn)在用兩臺電腦串口互連,但是接收的時候,超級終端從arm上接收的圖片數(shù)據(jù)總是不完全,總是接收到6000~7000的字節(jié)數(shù),換了好幾種方法來發(fā)送圖片,接收程序不變,還是不能收圖片完全,我用的是mmap函數(shù)把圖片映射到地址中,把這個地址放在write函數(shù)中寫到串口,圖片大小已經(jīng)確定,希望能得到各位老師的指點(diǎn),這個問題現(xiàn)在不知道怎么解決了,并且有時候連結(jié)尾標(biāo)志都發(fā)不出來.
我這里謝謝了~各位老師
期待中~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一下是主函數(shù)源碼,串口初始化程序是網(wǎng)絡(luò)上的代碼
img_addr = mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,img_fd,0);
if(img_addr == MAP_FAILED)
{ perror("map the image" ;
exit(1);
}
LastDataSize = sb.st_size % 506;
if(LastDataSize == 0) Pkg_num = sb.st_size / 506 ;
else Pkg_num = sb.st_size / 506 + 1;
DataSize = Pkg_num * 506;
f(LastDataSize == 0)
{
for(i = 0; i < Pkg_num; i++)
{
memcpy(PKG.data,img_addr + img_index,506);
len=write(fd,& KG,sizeof(_PKG));
img_index += 506;
}
sleep(2);
tcflush(fd,TCIOFLUSH);
len=write(fd,"EEF",3);
我試過發(fā)送256 512 1024 4096 5000 6000字節(jié)數(shù)都不行~我試驗(yàn)每次發(fā)送一段字節(jié)數(shù)都初始化串口在發(fā)送,還是不行
write返回依然是我要發(fā)送的字節(jié)大小,接收還是不完全 |
|