امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 3
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در ارسال ودریافت داده باینری
نویسنده پیام
Index1 آفلاین
تازه وارد

ارسال‌ها: 8
موضوع‌ها: 4
تاریخ عضویت: فروردین ۱۳۹۷

تشکرها : 9
( 1 تشکر در 1 ارسال )
ارسال: #1
مشکل در ارسال ودریافت داده باینری
کد 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_OVFvoid 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(file1fpathOpenMode.Binary)


        Do While Not EOF(file1)
            FileGet(file1inputData)
            Data1 += inputData
        Loop

        
For 1 To Len(Data1Step 50
            
If (50 Len(Data1)) Then
                Buffer1 
Mid(Data1i, (Len(Data1) - i))
                serial1.Write(Buffer1)
                Exit For
            Else
                Buffer1 Mid(Data1i50)
                serial1.Write(Buffer1)
            End If
        Next 
(آخرین ویرایش در این ارسال: ۳۱-فروردین-۱۳۹۷, ۱۹:۳۸:۲۶، توسط babyy.)
۳۱-فروردین-۱۳۹۷, ۱۴:۱۹:۵۸
ارسال‌ها
پاسخ
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #2
RE: مشکل در ارسال ودریافت داده باینری
مقدار buff رو چطوری متوجه میشید توش چی هست؟

در c وقتی کاراکتری با کد 0x00 بیاد؛‌ به معنی پایان رشته هست؛ یعنی اگر تابعی بخواد اون رو چاپ کنه؛ تا جایی ادامه میده که به کاراکتر 0x00 برخورد کنه؛

-----
فکر کنم از puts استفاده کردید واسه دیدنش؛
این لینک رو بخونید:
http://www.cplusplus.com/reference/cstdio/puts/



نقل قول: The function begins copying from the address specified (str) until it reaches the terminating null character ('\0')
(آخرین ویرایش در این ارسال: ۳۱-فروردین-۱۳۹۷, ۱۹:۵۱:۴۴، توسط babyy.)
۳۱-فروردین-۱۳۹۷, ۱۹:۴۶:۱۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, 1نفر, Index1
Index1 آفلاین
تازه وارد

ارسال‌ها: 8
موضوع‌ها: 4
تاریخ عضویت: فروردین ۱۳۹۷

تشکرها : 9
( 1 تشکر در 1 ارسال )
ارسال: #3
RE: مشکل در ارسال ودریافت داده باینری
(۳۱-فروردین-۱۳۹۷, ۱۹:۴۶:۱۵)babyy نوشته است: مقدار buff رو چطوری متوجه میشید توش چی هست؟

در c وقتی کاراکتری با کد 0x00 بیاد؛‌ به معنی پایان رشته هست؛ یعنی اگر تابعی بخواد اون رو چاپ کنه؛ تا جایی ادامه میده که به کاراکتر 0x00 برخورد کنه؛

-----
فکر کنم از puts استفاده کردید واسه دیدنش؛
این لینک رو بخونید:
http://www.cplusplus.com/reference/cstdio/puts/



نقل قول: The function begins copying from the address specified (str) until it reaches the terminating null character ('\0')

Dim fpath as string
Dim file,i as integer
Dim ZeroCounter As integer

file1 = FreeFile()
        FileOpen(file1, fpath, OpenMode.Binary)
  Do While Not EOF(file1)
            FileGet(file1, inputData)
            Data1 += inputData
        Loop
  FileClose(file1)

  for i = 1 to len(data1)
   if (asc(mid(data1,i,1)) = 0 then
    ZeroCounter += 1    
   end if
  Next i  

  Msgbox(ZeroCounter,vbInformation,"Tedad 0 mojod dar file")
۰۱-اردیبهشت-۱۳۹۷, ۱۱:۵۸:۵۸
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] خواندن داده های یک فایل روی هارد در برنامه بسکام Ambassador 1 739 ۲۸-تير-۱۳۹۹, ۱۶:۱۴:۱۴
آخرین ارسال: Ambassador
  تبدیل اعداد نشون داده شده روی سون سگمنت به عدد saeedsmk 2 1,761 ۰۶-اردیبهشت-۱۳۹۷, ۲۱:۵۹:۳۵
آخرین ارسال: 1نفر
  انتقال داده از طریق اترنت (Network) iman-63 36 33,755 ۲۰-آذر-۱۳۹۶, ۲۰:۲۹:۳۱
آخرین ارسال: اکبرو
  ارسال و دریافت دیتا بین ماژول GSM وسایت hfhossein 1 2,286 ۲۶-آبان-۱۳۹۶, ۱۴:۱۳:۲۰
آخرین ارسال: hadikh73
  ارسال متن از میکرو به وی بی student-p 19 19,615 ۱۲-اسفند-۱۳۹۴, ۲۱:۵۲:۰۲
آخرین ارسال: omid_phoenix
  ارسال و دريافت اطلاعات از پايه هاي AVR-ATMEGA32 mahdi321 1 2,470 ۱۹-مهر-۱۳۹۴, ۲۰:۵۳:۰۶
آخرین ارسال: milad15m
  مشکل در ارسال مقدار دو ولوم از طریق HMT-HMR starlit 6 4,105 ۰۴-مهر-۱۳۹۴, ۱۹:۱۰:۲۳
آخرین ارسال: starlit
  کد کردن دیتا برای ارسال بیسیم؟ cortex-m3 3 3,128 ۲۴-خرداد-۱۳۹۴, ۰۹:۲۲:۵۹
آخرین ارسال: student-p
  [پروژه] ارسال اس ام اس و تماس با gsm a.mehran 24 12,160 ۲۵-آذر-۱۳۹۳, ۲۲:۳۹:۴۲
آخرین ارسال: Ambassador
  ارسال کاراکترهای فارسی با پورت سریال 38505512 2 4,254 ۳۰-آبان-۱۳۹۳, ۱۲:۴۳:۰۰
آخرین ارسال: pooramin

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS