Thông báo

Collapse
No announcement yet.

VC++ và COM

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    cảm ơn các bác nhiều, em hiểu ý bác rồi ạ. em đang tra trong Codevision mà chưa ra gì cả bác ạ.


    hight_byte = n >> 8; // dịch phải 8 bits để làm gì ạ??? tại sao mình cần phân biệt 2 kiểu low và hight byte ạ??? đa tạ bác

    Comment


    • #17
      xx // start byte
      0x00 // hi byte
      0x01 // low byte
      (yy) // có thể thêm ki tự '.' nếu muốn
      0x00 // hi byte
      0x02 // low byte
      zz // stop byte

      các dòng này em chưa hiểu ý nghĩa của nó lắm bác ạ, sao có xx, yy, zz là gì vậy ạ??

      Comment


      • #18
        có một cách đơn giản mà hiệu quả hơn, tôi nghĩ bạn có thể áp dụng. Đó là lấy số thực nhân với 10 (nếu muôn sau dấu , 1 chữ số có nghĩa) hoặc nhân 100 (nếu 2 chữ số có nghĩa) rồi truyền nó theo số nguyên lên máy tính. máy tinh nhận được lại chia cho 10 hay 100 thành số thực. Ví dụ 2,3 thì truyền thành 23 hoặc 230.
        Nếu là giá trị điẹn áp từ 0 - 5V thì bạn không nên truyền theo đơn vị Volt mà truyền theo mV (tức là nhân với 1000). 2.3 V thì thì truyền thành 2300.
        CUNG CẤP PSOC, MẠCH NẠP
        CHUYỂN ĐỔI USB <-> RS485 AutoBaud
        RS232 <-> RS485 MultiBaud
        MẠCH NẠP USBPPI S7-200
        Mobile: 0906076116
        Email:

        Comment


        • #19
          Nguyên văn bởi nghoang Xem bài viết
          xx // start byte
          0x00 // hi byte
          0x01 // low byte
          (yy) // có thể thêm ki tự '.' nếu muốn
          0x00 // hi byte
          0x02 // low byte
          zz // stop byte

          các dòng này em chưa hiểu ý nghĩa của nó lắm bác ạ, sao có xx, yy, zz là gì vậy ạ??
          cái xx, yy, zz là các byte bạn tự định nghĩa trong giao thức truyền nhận của mình. Bạn thích nó bằng bao nhiêu cũng được. Việc truyền thứ tự hi_byte hoặc low_byte trước cũng là một kiểu định nghĩa mà do bạn đặt ra để bên nhận theo giao thức đó mà nhận đúng dữ liệu
          CUNG CẤP PSOC, MẠCH NẠP
          CHUYỂN ĐỔI USB <-> RS485 AutoBaud
          RS232 <-> RS485 MultiBaud
          MẠCH NẠP USBPPI S7-200
          Mobile: 0906076116
          Email:

          Comment


          • #20
            Nguyên văn bởi encoder Xem bài viết
            có một cách đơn giản mà hiệu quả hơn, tôi nghĩ bạn có thể áp dụng. Đó là lấy số thực nhân với 10 (nếu muôn sau dấu , 1 chữ số có nghĩa) hoặc nhân 100 (nếu 2 chữ số có nghĩa) rồi truyền nó theo số nguyên lên máy tính. máy tinh nhận được lại chia cho 10 hay 100 thành số thực. Ví dụ 2,3 thì truyền thành 23 hoặc 230.
            Nếu là giá trị điẹn áp từ 0 - 5V thì bạn không nên truyền theo đơn vị Volt mà truyền theo mV (tức là nhân với 1000). 2.3 V thì thì truyền thành 2300.
            Chia ra điện áp rồi lại nhân rồi vẫn phải chuyển sang số nguyên rồi lại chuyển thành string. Nếu làm trên CodeVision
            http://techpal.vn
            Chia sẻ công nghệ, cùng thành công

            Comment


            • #21
              Chia ra điện áp rồi lại nhân rồi vẫn phải chuyển sang số nguyên rồi lại chuyển thành string. Nếu làm trên CodeVision

              nghĩa là sao vậy bác?? sao ta phải chuyển sang string a???

              Comment


              • #22
                Nguyên văn bởi nghoang Xem bài viết
                Chia ra điện áp rồi lại nhân rồi vẫn phải chuyển sang số nguyên rồi lại chuyển thành string. Nếu làm trên CodeVision

                nghĩa là sao vậy bác?? sao ta phải chuyển sang string a???
                Mình nhớ không lầm thì trong CodeVision chỉ có hàm truyền kí tự tức là truyền một char. Để truyền một số trước hết bạn phải chuyển thành xâu kí tự sau đó truyền từng kí tự một như để truyền xau kí tự: "abc" thì bạn phải truyền lần lượt "a","b" và "c". Để truyền một số nguyên bạn đổi nó thành xâu sau đó cũng thực hiện truyền từng kí tự trong xâu. Không biết CodeVision mới nhất có hỗ trợ truyền xâu kí tự không
                http://techpal.vn
                Chia sẻ công nghệ, cùng thành công

                Comment


                • #23
                  tính ra nó khó thế ạ, em đang đọc bài này, mà có nhiều lệnh ko hiểu quá, xin các bác chỉ giúp em với. đây là toàn bộ chương trình của bác gtvt45 ạ.

                  http://dientuvietnam.net/forums/show...?t=7391&page=2

                  cảm ơn các bác nhiều lắm ạ

                  Comment


                  • #24
                    Sử dụng thư viện stdio chuẩn.
                    Khỏi mất time viết code chuyển đổi.
                    Nhưng nếu dùng realtime thì lời khuyên là không nên.
                    Cái này truyền dữ liệu ADC lên terminal trên máy tính.

                    PS:Mình xài GCC không xài CV.
                    Attached Files

                    Sông dài, Thuyền lớn, Biển rộng bao la.
                    Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.

                    Comment


                    • #25
                      1.Sử dụng thư viện stdio chuẩn. mình làm thế nào để sử dụng đựoc cái này bác ơi?

                      2. Nhưng nếu dùng realtime thì lời khuyên là không nên
                      realtime nghĩa là gì ạ? không nên là không nên làm gì ạ?

                      3. Cái này truyền dữ liệu ADC lên terminal trên máy tính.
                      terminal trên máy tính là gì vậy bác ơi???

                      4.PS:Mình xài GCC không xài CV.

                      GCC và CV là gì a?

                      Em mới làm quen điện tử và AVR, nên mong bác trả lời cụ thể chút ạ (cứ coi em là kẻ ngốc cũng được ạ), em biết bác đã làm rất khá các mảng này nên mới hiểu nhanh và trả lời vắn tắt như vậy.

                      Nhưng thực sự em đọc thì rất khó hiểu được nội dung ạ. đa tạ bác!!!! mong bác giúp em đêm nay.

                      cái này có

                      Comment


                      • #26
                        Nguyên văn bởi nghoang Xem bài viết
                        1.Sử dụng thư viện stdio chuẩn. mình làm thế nào để sử dụng đựoc cái này bác ơi?

                        2. Nhưng nếu dùng realtime thì lời khuyên là không nên
                        realtime nghĩa là gì ạ? không nên là không nên làm gì ạ?

                        3. Cái này truyền dữ liệu ADC lên terminal trên máy tính.
                        terminal trên máy tính là gì vậy bác ơi???

                        4.PS:Mình xài GCC không xài CV.

                        GCC và CV là gì a?

                        Em mới làm quen điện tử và AVR, nên mong bác trả lời cụ thể chút ạ (cứ coi em là kẻ ngốc cũng được ạ), em biết bác đã làm rất khá các mảng này nên mới hiểu nhanh và trả lời vắn tắt như vậy.

                        Nhưng thực sự em đọc thì rất khó hiểu được nội dung ạ. đa tạ bác!!!! mong bác giúp em đêm nay.

                        cái này có

                        1)stdio là thư viên giao tiếp có các hàm giao tiếp như :"printf,scanf" hàm này có thể nhận tham số dạng số thực tự chuyển đổi sang dạng kí tự rồi truyền đi,nhưng hình như trong GCC nó bị lược giản chức năng truyền số thực,bạn cứ truyền số nguyên,miễn là truyền nhận okie là dc rồi.
                        2)realtime vì lệnh này mà chạy thì tốn rất nhiều chu kì máy của vdk.
                        3)Terminal là 1 chương trình đầu cuối giao tiếp máy tính bằng cổm COM bạn khôgn cần viết ct cho máy tính có thể lấy cái này xài
                        link cho ct này nằm ở đây
                        4)AVR GCC là bộ ct dùng để dịch C cho AVR còn CV là codevision AVR.

                        đi ngủ,mưa làm nhức cái đầu.hichic

                        Sông dài, Thuyền lớn, Biển rộng bao la.
                        Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.

                        Comment


                        • #27
                          bác lại cũng ngủ luôn mất rồi, hichic

                          cảm ơn bác, nhưng em ko cần cái Terminal làm gì cả, em cần đọc vaò 1 chương trình console trong VC thôi mà.

                          bạn cứ truyền số nguyên,miễn là truyền nhận okie là dc rồi.

                          Tiếc là em ko hiểu câu của bác, em chưa truyền được gì (cả nguyên và thực) bác ạ.

                          Comment


                          • #28
                            nếu truyền số nguyên thì chỉ cần 2 lần truyền ký tự là được. Không nên convert sang string vì như vậy tốn tài nguyên và không tối ưu về tốc độ. ví dụ về cách truyền số nguyên idata:

                            từ VDK: (code tượng trưng)
                            UART_PutChar(idata >> 8); // send hight byte
                            UART_PutChar(idata); // send low byte
                            // UART_PutChar là hàm gửi 1 kí tự

                            trên PC (ngôn ngữ C#)
                            hi = serialPort.ReadByte(); // read hightByte
                            low = serialPort.ReadByte(); // read low byte
                            idata = (hi << 8) | low; // nhpa lai thanh so nguyen

                            như vậy bạn chỉ cần truyền 2 kí tự là đủ, nếu convert sang string thì bạn có thể phải truyền nhiêu hơn. Ví dụ truyền số nguyên 12345 thì phải truyền 5 kí tự liên tiếp '1', '2', '3', '4', '5'. Hơn nữa hàm biến đổi số nguyên thành string cũng khá tốn bộ nhớ và thời gian thực thi.
                            Last edited by encoder; 13-09-2007, 10:21.
                            CUNG CẤP PSOC, MẠCH NẠP
                            CHUYỂN ĐỔI USB <-> RS485 AutoBaud
                            RS232 <-> RS485 MultiBaud
                            MẠCH NẠP USBPPI S7-200
                            Mobile: 0906076116
                            Email:

                            Comment


                            • #29
                              bác có thể chỉ em rõ hơn cái bytecao và byte thấp ko ạ?

                              cảm ơn bác nhiều.

                              Em dần hiểu hơn một chút rồi ạ..

                              Comment


                              • #30
                                cũng giống như số thập phân vậy. VD với số 23 thì số 2 là số có trọng số cao hơn số 3. thì hight byte va lowbyte cũng mang nghĩa như vậy. theo phép toán decimal thì
                                2 = (23) / 10 <-> hightByte = (int) >> 8;
                                3 = (23) % 10 <-> lơbyte = (int) & 0xff;
                                sự khác nhau chỉ là phép tính trong hệ thập phân và hệ nhị phân thôi.
                                CUNG CẤP PSOC, MẠCH NẠP
                                CHUYỂN ĐỔI USB <-> RS485 AutoBaud
                                RS232 <-> RS485 MultiBaud
                                MẠCH NẠP USBPPI S7-200
                                Mobile: 0906076116
                                Email:

                                Comment

                                Về tác giả

                                Collapse

                                nghoang Tìm hiểu thêm về nghoang

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X