نمایش نتایج 1 تا 10 از 10

نام تاپیک: تحلیل و تبدیل دو قطعه کد

  1. #1
    کاربر دائمی آواتار nima_8m
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    سن
    42
    پست
    642

    تحلیل و تبدیل دو قطعه کد

    با سلام به اساتید گرامی
    سپاس از زحماتتون برای برپا نگهداشتن این تالار
    من دوتا قطعه کد فاکس دارم که مربوط میشه به اتصال ترازو به برنامه حالا میخوام تحلیل این دو قطعه کد و تفاوتش رو بدونم و اگه بشه به سی شارپ تبدلیش کنم برای برنامه ممنون

    wight_tar = FOPEN('COM1', 12)
    wight_c = FREAD(wight_tar, 8)
    FCLOSE(wight_tar)
    PUBLIC a[3]
    FOR i = 1 TO 3
    a[i] = ASC(SUBSTR(wight_c, AT('»', wight_c)+i, 1))
    a[i] = dec2hex(a(i))
    ENDFOR
    result = a(1)+a(2)+a(3)
    RELEASE a
    result = VAL(result)/1000
    ENDPROC



    wight_tar = FOPEN('COM1', 12)
    wight_c = FREAD(wight_tar, 32)
    FCLOSE(wight_tar)
    PUBLIC a
    a = ''
    FOR i = 1 TO 8
    a = a+SUBSTR(wight_c, AT('+', wight_c)+i, 1)
    ENDFOR
    result = VAL(ALLTRIM(a))
    RELEASE a
    result = result/1000
    ENDPROC

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    دامغان
    پست
    570

    نقل قول: تحلیل و تبدیل دو قطعه کد

    سلام
    تا اونجایی من میدونم FOPEN برای باز کردن فایله نه خواندن از پورت com!امیدوارم اساتید راهنمایی کنند.

  3. #3
    کاربر دائمی آواتار nima_8m
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    سن
    42
    پست
    642

    نقل قول: تحلیل و تبدیل دو قطعه کد

    نقل قول نوشته شده توسط gh_khajehzade مشاهده تاپیک
    سلام
    تا اونجایی من میدونم FOPEN برای باز کردن فایله نه خواندن از پورت com!امیدوارم اساتید راهنمایی کنند.
    این کد ها در حال حاضر به خوبی دارن کار میکنن

  4. #4

    نقل قول: تحلیل و تبدیل دو قطعه کد

    نقل قول نوشته شده توسط nima_8m مشاهده تاپیک
    با سلام به اساتید گرامی
    سپاس از زحماتتون برای برپا نگهداشتن این تالار
    من دوتا قطعه کد فاکس دارم که مربوط میشه به اتصال ترازو به برنامه حالا میخوام تحلیل این دو قطعه کد و تفاوتش رو بدونم و اگه بشه به سی شارپ تبدلیش کنم برای برنامه ممنون

    wight_tar = FOPEN('COM1', 12)
    wight_c = FREAD(wight_tar, 8)
    FCLOSE(wight_tar)
    PUBLIC a[3]
    FOR i = 1 TO 3
    a[i] = ASC(SUBSTR(wight_c, AT('»', wight_c)+i, 1))
    a[i] = dec2hex(a(i))
    ENDFOR
    result = a(1)+a(2)+a(3)
    RELEASE a
    result = VAL(result)/1000
    ENDPROC



    wight_tar = FOPEN('COM1', 12)
    wight_c = FREAD(wight_tar, 32)
    FCLOSE(wight_tar)
    PUBLIC a
    a = ''
    FOR i = 1 TO 8
    a = a+SUBSTR(wight_c, AT('+', wight_c)+i, 1)
    ENDFOR
    result = VAL(ALLTRIM(a))
    RELEASE a
    result = result/1000
    ENDPROC
    با سلام
    تابع fopen که در ویژوال فاکس استفاده میشه مشابه عملکرد توابع مربوط به I/O در زبان C می باشد، بنابراین شما می توانید هر جریان ورودی را به این توابع ارسال نمایید مثلا در زبان C تحت لینوکس ورودی ترمینال را به عنوان یک جریان پاس میدیم بنابراین این جریان ورودی می تواند هم یک فایل ذخیره شده بر روی هارد دیسک باشد وهم می توانید جریان ورودی بایت ها از یک پورت سریال مثل COM باشد.ویا حتی می تواند جریان ورودی از یک سوکت TCP/IP باشد...
    عملکرد برنامه شما هم ابتدا یک جریان داده از ورودی دریافت میشود در یک رشته بایت بعد قطعا برای استخراج صحیح بایت ها به یک MASK احتیاج هست که در اینجا در یک حلقه با استفاده از دستورات داخل حلقه بایت های دریافتی در یک آرایه ذخیره شده و بعد از حلقه ها هم که اطلاعات آرایه چون از نوع رشته های بایت ذخیره شده با استفاده از تابع VAL به مقدار عددی Cast شده است.
    تفاوت این دوتا تکه کد هم در نوع داده های دریافتی از ورودی هست که در مثال اول 8 بایت داده دریافت شده در دومی 32 بایت داده دریافت شده یا حداقل در دستور fread اینگونه تعریف شده اند.
    وبرای تبدیل به کد سی شارپ هم کافی که با استفاده از کلاس serialPort یک ارتباط برقرار کنید برای Extract Data Buffer هم کافی که از Bit Mask Vector ها به همراه عملگرهای بیتی استفاده کنید.

  5. #5
    کاربر دائمی آواتار nima_8m
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    سن
    42
    پست
    642

    نقل قول: تحلیل و تبدیل دو قطعه کد

    ممنون و سپاسگذارم از پاسخ کامل شما این کد برای ترازوهای قدیمی بود من یه عکس از ارسال دیتا ترازوهای جدیدی به پیوست فرستادم آیا میشه با همین کد و یه تغییراتی این اطلاعات رو خوند ممنون میشم قدیما ترازوها به صورت هگز میفرستادن ولی الان عیناً عدد وزن رو ارسال میکنن ممنون میشم راهنمایی بفرمایید
    اعداد ارسالی بعداز مساوی 3 رقم اعداد صحیح دات و سه رقم اعداد اعشاری
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg t.jpg‏ (92.8 کیلوبایت, 26 دیدار)

  6. #6

    نقل قول: تحلیل و تبدیل دو قطعه کد

    نقل قول نوشته شده توسط nima_8m مشاهده تاپیک
    ممنون و سپاسگذارم از پاسخ کامل شما این کد برای ترازوهای قدیمی بود من یه عکس از ارسال دیتا ترازوهای جدیدی به پیوست فرستادم آیا میشه با همین کد و یه تغییراتی این اطلاعات رو خوند ممنون میشم قدیما ترازوها به صورت هگز میفرستادن ولی الان عیناً عدد وزن رو ارسال میکنن ممنون میشم راهنمایی بفرمایید
    اعداد ارسالی بعداز مساوی 3 رقم اعداد صحیح دات و سه رقم اعداد اعشاری
    خواهش میکنم دوست عزیز!
    لطفا نمونه بافر بایتی که از ترازو های جدید میگیرید را در اینجا قرار بدید واینکه عینا که نمی تونه عدد دسیمال باشه به هرحال سخت افزار یک کد باینری تولید میکنه که تبدیل به یک هگز میکنه به عنوان یک ورودی تحول برنامه میده یعنی به هرحال یک مبدل داره! به همین ترتیب بافر دیتایی که از ترازو گرفتید را نمونه اش را ارسال کنید امیدوارم منظورم را درست بیان کرده باشم.

  7. #7
    کاربر دائمی آواتار nima_8m
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    سن
    42
    پست
    642

    نقل قول: تحلیل و تبدیل دو قطعه کد

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    خواهش میکنم دوست عزیز!
    لطفا نمونه بافر بایتی که از ترازو های جدید میگیرید را در اینجا قرار بدید واینکه عینا که نمی تونه عدد دسیمال باشه به هرحال سخت افزار یک کد باینری تولید میکنه که تبدیل به یک هگز میکنه به عنوان یک ورودی تحول برنامه میده یعنی به هرحال یک مبدل داره! به همین ترتیب بافر دیتایی که از ترازو گرفتید را نمونه اش را ارسال کنید امیدوارم منظورم را درست بیان کرده باشم.
    ممنونم از پاسخ های کامل شما من یه عکس به پیوست فرستادم کامل توضیح داده که وزن ها به صورت AASCII ارسال میشه ترازوهای قدیمی به صورت باینری میفرستادن امیدوارم کمک کنه
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: png T7.png‏ (65.6 کیلوبایت, 25 دیدار)

  8. #8

    نقل قول: تحلیل و تبدیل دو قطعه کد

    نقل قول نوشته شده توسط nima_8m مشاهده تاپیک
    ممنونم از پاسخ های کامل شما من یه عکس به پیوست فرستادم کامل توضیح داده که وزن ها به صورت AASCII ارسال میشه ترازوهای قدیمی به صورت باینری میفرستادن امیدوارم کمک کنه
    ببنید این تکه برنامه کارتون راه میندازه!(البته که تست نکردم زحمت تست اش با خودتون)

    using System;
    using System.IO.Ports;
    using System.Threading;

    public class PortChat
    {
    static bool _continue;
    static SerialPort _serialPort;
    public static void Main()
    {
    string name;
    string data;
    Thread readThread = new Thread(Read);
    _serialPort = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
    _serialPort.Handshake = Handshake.None;
    _serialPort.ReadTimeout = 500;
    _serialPort.WriteTimeout = 500;
    _serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived)


    try
    {
    if(!(_serialPort.IsOpen)){
    _serialPort.Open();
    readThread.Start();
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show("Error opening/writing to serial port :: " + ex.Message, "Error!");
    }

    readThread.Join();
    _serialPort.Close();
    }


    void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
    Thread.Sleep(500);
    _continue = false;
    }


    public static void Read()
    {
    while (_continue)
    {
    try
    {
    data = _serialPort.ReadLine();
    Console.WriteLine(data);
    }
    catch (TimeoutException) { }
    }
    }


    int getWeight(){

    int weight =0 , i =0;
    string tmp ;
    foreach (string buf in data) {
    i++;
    tmp += buf.Substring(buf.IndexOf("+") + i , 1) ;
    }
    weight = Convert.ToInt32(buf.Trim(), 16) / 1000;
    }

    الان ین برنامه تبدیل شده برنامه وی فاکس هست که قرار داده بودید.
    امیدوارم موفق باشید.

  9. #9
    کاربر دائمی آواتار nima_8m
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    سن
    42
    پست
    642

    نقل قول: تحلیل و تبدیل دو قطعه کد

    سلام به اساتید گرامی خصوصا جناب شیری که همیشه به ما لطف دارن
    تو پست شماره 5 خروجی ترازو روی هایپرترمینال نمایش داده شده که به اینصورت هست (پست شماره 5 )
    =015.120(kg)

    کاملا واضح است که سه رقم اول از سمت چپ عدد صحیح و سه رقم بعد از دات رقم اعشاری است و نمایش نماد کیلوگرم
    من یه کد میخوام که عدد صحیح با سه رقم اعشاری رو از پورت بخونه و نمایش بده یعنی مساوی و صفر قبل عدد و نماد کیلوگرم حذف بشه
    کدی که من درحال حاضر دارم استفاده میکنم تو پست شماره یک هست

  10. #10

    نقل قول: تحلیل و تبدیل دو قطعه کد

    نقل قول نوشته شده توسط nima_8m مشاهده تاپیک
    سلام به اساتید گرامی خصوصا جناب شیری که همیشه به ما لطف دارن
    تو پست شماره 5 خروجی ترازو روی هایپرترمینال نمایش داده شده که به اینصورت هست (پست شماره 5 )
    =015.120(kg)

    کاملا واضح است که سه رقم اول از سمت چپ عدد صحیح و سه رقم بعد از دات رقم اعشاری است و نمایش نماد کیلوگرم
    من یه کد میخوام که عدد صحیح با سه رقم اعشاری رو از پورت بخونه و نمایش بده یعنی مساوی و صفر قبل عدد و نماد کیلوگرم حذف بشه
    کدی که من درحال حاضر دارم استفاده میکنم تو پست شماره یک هست
    سلام خواهش میکنم دوست گرامی!
    ببنید این کد جواب میده! فقط به جای ورودی تابع مقدار fread را پاس بدید

    *wight_tar = FOPEN('COM1', 12)
    *wight_c = FREAD(wight_tar, 8)
    *FCLOSE(wight_tar)

    *!* if unsigned number
    wight_c = "015.120(kg)"
    *21.510
    ?getWeight(wight_c)

    *!* if signed number
    wight_c ="015.12-(kg)"
    *-21.510
    ?getWeight(wight_c)

    FUNCTION getWeight
    PARAMETERS wight_c
    PUBLIC bufStr[7] as byte,result as double
    str_weight = ""
    FOR i=1 TO LEN(wight_c)-5
    bufStr[i] = SUBSTR(wight_c, AT("(kg)",wight_c)-i, 1)
    str_weight = str_weight +bufStr[i]
    ENDFOR
    result = VAL(str_weight)
    RETURN result
    ENDFUNC

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •