۳۱-فروردین-۱۳۹۷, ۱۴:۱۹:۵۸
کد php:
#include <mega32a.h>
#include <delay.h>
// Alphanumeric LCD functions
#include <alcd.h>
// Standard Input/Output functions
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// #include "Lib/FatByAbbas.c"
// #include <ff.h>
// Declare your global variables here
char dataX;
int cnt=0;
char buff[150];
char buff1[4];
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x8B;
// Place your code here
disk_timerproc();
if(PINC.0==0)
{
lcd_clear();
lcd_putsf("send data button pressed!");
puts(buff);
while(!PINC.0);
};
if(PINC.1==0)
{
lcd_clear();
lcd_putsf("buffer cnt pos*");
lcd_gotoxy(1,1);
itoa(cnt,buff1);
lcd_puts(buff1);
delay_ms(50);
lcd_gotoxy(7,1);
itoa(strlen(buff),buff1);
lcd_puts(buff1);
while(!PINC.1);
};
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRA=(0«DDA7) | (0«DDA6) | (0«DDA5) | (0«DDA4) | (0«DDA3) | (0«DDA2) | (0«DDA1) | (0«DDA0);
PORTA=(0«PORTA7) | (0«PORTA6) | (0«PORTA5) | (0«PORTA4) | (0«PORTA3) | (0«PORTA2) | (0«PORTA1) | (0«PORTA0);
cnt=0;
while (1)
{
// Place your code here
dataX = getchar();
if(cnt>150){
lcd_putsf("Buffer Overflow!");
}
strcat(buff,&dataX);
cnt++;
}
}
تو قسمت حلقه بینهایت(while!1) تابع getchar داده رو از پورت سریال میخونه،تابع strcat داده دریافتیو تو اخرین خونه متغیر بافر می ریزه! نمیدونم مشکلش کجاس،text میفرستم مشکل نداره ولی binary موقع دریافت کاراکترهایی که کد اسکی+شون 0 باشه در نظر نمیگیره(skip میکنه)
*اینم برنامه vb.net واسه ارسال فایل
کد php:
fpath = "D:\cam.bmp"
file1 = FreeFile()
FileOpen(file1, fpath, OpenMode.Binary)
Do While Not EOF(file1)
FileGet(file1, inputData)
Data1 += inputData
Loop
For i = 1 To Len(Data1) Step 50
If (i + 50 > Len(Data1)) Then
Buffer1 = Mid(Data1, i, (Len(Data1) - i))
serial1.Write(Buffer1)
Exit For
Else
Buffer1 = Mid(Data1, i, 50)
serial1.Write(Buffer1)
End If
Next