Thông báo

Collapse
No announcement yet.

Cần giúp về serial port trong VB.net!

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

  • Cần giúp về serial port trong VB.net!

    Chào mọi người! Mình có một mạch avr cổng c nối với 8 led đơn!Mình dùng serial port để xuất dữ liệu 8 bit từ máy tính ra avr nhưng chỉ xuất được có 6 bit. Khi mình xuất 0 thì cả 8 đèn cùng sáng. NHưng khi xuất 255 thì lại chỉ có 6 đèn tối! Ai gặp lỗi này rùi chỉ giúp mình với! Mình dùng Uart, cài đặt tốc độ baud, 8 bit data, ko kiểm tra chẵn lẻ,1 stop bit cả ở trong code avr và vb giống nhau nhưng vẫn bị lỗi trên!
    Mình thanks trước!

  • #2
    Bạn :
    - Kiểm tra lại tính toán Baudrate có đúng không.
    - Hàm nhận thế nào, có thể sử dung ngắt để nhận.

    có nhiều code mẫu bạn nên tham khảo thử xem.

    Comment


    • #3
      Vâng! Em cảm ơn anh! Em đã tính toán đúng cả rồi! Khi em viết code send dữ liệu bằng VB 6 thì nhận được cả 8 bit! Nhưng viết bằng vb.net thì chỉ nhận được có 6 bit!Em không hiểu sao nữa?

      Comment


      • #4
        .net thì không có kinh nghiệm rồi, chịu khó sửa code vậy.

        tham khảo : http://www.codeproject.com/KB/vb/Com...de_simple.aspx

        Comment


        • #5
          Thanks bác! Sao mọi người vẫn thích dùng vb 6 bác nhỉ??

          Comment


          • #6
            Mất dữ liệu khi truyền ra serial port!

            Bác cho em hỏi tại sao khi em set khung truyền là 1 bit start,8 bit dât,ko kiểm tra chẵn lẻ, 1 bit stop trong vb.net.
            Em sử dụng hàm serial port.write(chr(txt_data.text)) thì chỉ xuất ra được 7 bit dữ liệu?
            Các giá trị <=127 thì xuất đúng, > 128 thì sai là sao ạ?
            đã ai gặp lỗi này chưa giúp em với ạ!

            Comment


            • #7
              Sao không dùng COM Port có phải đơn giản hơn ko ?

              Comment


              • #8
                serial port.write(chr(txt_data.text))
                Chắc chọn kiểu "char" nên nó nằm trong dải -127->127, xem có kiểu unsigned char hay BYTE thì đổi là được đó. "Đọc kỹ hướng dẫn sử dụng trước khi dùng" chứ

                Comment


                • #9
                  mình cũng gặp vấn đề như thế này. nhưng mình làm bên tổng đài. nhận thông tin cuộc gọi qua RS232. nhưng chạy không ổn định. có tổng đài chạy ok nhưng co tổng đài chạy không được. nó xuất chưa hết chuỗi ra là nó ngưng, có bạn nào giúp mình không. nhưc đầu cả tháng nay rồi. Thanks bro trước.

                  Comment


                  • #10
                    Nguyên văn bởi secvnn Xem bài viết
                    mình cũng gặp vấn đề như thế này. nhưng mình làm bên tổng đài. nhận thông tin cuộc gọi qua RS232. nhưng chạy không ổn định. có tổng đài chạy ok nhưng co tổng đài chạy không được. nó xuất chưa hết chuỗi ra là nó ngưng, có bạn nào giúp mình không. nhưc đầu cả tháng nay rồi. Thanks bro trước.
                    Mình làm được nó xuất đủ 8 bit dữ liệu rồi:
                    Mình thêm đoạn code này vào:
                    SerialPort1.Encoding = System.Text.Encoding.GetEncoding(1252)

                    Comment


                    • #11
                      Nguyên văn bởi nacdanh90 Xem bài viết
                      Mình làm được nó xuất đủ 8 bit dữ liệu rồi:
                      Mình thêm đoạn code này vào:
                      SerialPort1.Encoding = System.Text.Encoding.GetEncoding(1252)
                      Thêm đoạn này vô làm gì vậy bạn. Encoding là sao vậy bạn, mình nhận về dữ liệu là text luôn rùi nè
                      Code:
                      12/ 6/13  12:16PM 100  03 0908749380                            00:00'10  3939
                      làm sao để biết khi nào chuỗi bắt đầu và kết thúc. mình dùng c# nên không thể đọc được.

                      Comment


                      • #12
                        Nguyên văn bởi secvnn Xem bài viết
                        Thêm đoạn này vô làm gì vậy bạn. Encoding là sao vậy bạn, mình nhận về dữ liệu là text luôn rùi nè
                        Code:
                        12/ 6/13  12:16PM 100  03 0908749380                            00:00'10  3939
                        làm sao để biết khi nào chuỗi bắt đầu và kết thúc. mình dùng c# nên không thể đọc được.
                        Bắt đầu hay kết thúc thì do cái thằng chế tạo tổng đài nó đẩy dữ liệu ra theo kiểu nào ( Protocol ) từ cái đó ta kiểm tra nó là bắt đầu hay kết thúc !

                        Chẳng hạn nó truyền bao nhiêu byte , thời gian bao nhiêu lâu , trước lúc truyền , kết thúc có kĩ hiệu gì đặc biệt không ? thời gian nghỉ khi truyền , khi kết thúc .v..v
                        Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                        Comment


                        • #13
                          Nguyên văn bởi queduong Xem bài viết
                          Bắt đầu hay kết thúc thì do cái thằng chế tạo tổng đài nó đẩy dữ liệu ra theo kiểu nào ( Protocol ) từ cái đó ta kiểm tra nó là bắt đầu hay kết thúc !

                          Chẳng hạn nó truyền bao nhiêu byte , thời gian bao nhiêu lâu , trước lúc truyền , kết thúc có kĩ hiệu gì đặc biệt không ? thời gian nghỉ khi truyền , khi kết thúc .v..v
                          Khi mình nhận được bằng C# thì đẩy lên TextBox thì nó hay có hình vuông ở đầu và ở cuối mỗi lần nhận được dữ liệu. Dùng HyperTerminal thì không thấy cái ký tự đó(dấu | là vị trí ký tự hình ô vuông).
                          Code:
                          |Date     Time    T Ext    CO     Dial Number         Ring Duration Acct code  CC
                          Còn nếu mình lưu ra file text thì nó nhảy như vậy. mình không biết bao nhiêu byte. bạn có code nào đọc byte bằng c# không nè. share cho mình với. mình tìm mà không thấy. (dấu | là mình thêm vô cho dễ thấy nó tự nhảy xuống dòng)
                          Code:
                          |11/29/13|
                          | 12:21PM 1    E786  T1012 786       0912201015       0|
                          |0:00'54 |
                          |     |
                          |     
                          |
                          Khi vừa gọi xong gác máy là lập tức tổng đài sẽ đẩy dữ liệu liền. mình dùng thuộc tính ReadExting() của thằng SerialPort. Còn dùng ReadLine thì nó đọc tới đây là dừng:
                          Code:
                          |11/29/13|
                          Mình có hỏi chổ tổng đài thì bọn nó nói là dữ liệu nó trả về 1 lần là bao nhiêu đó. quan trọng là cách mình bắt dữ liệu như thế nào. nên mình cũng bó tay. chẳng hiểu nỗi quá trính SerialPort hoạt động ra sao nữa. bạn có thể nói cho mình biết cách no hoạt đọng như thế nào không, làm sao để kiểm tra hay cắt đi những ký tự lạ đó. Thanks!!!
                          Last edited by secvnn; 06-12-2013, 16:48.

                          Comment


                          • #14
                            [QUOTE=secvnn;816837]Khi mình nhận được bằng C# thì đẩy lên TextBox thì nó hay có hình vuông ở đầu và ở cuối mỗi lần nhận được dữ liệu. Dùng HyperTerminal thì không thấy cái ký tự đó(dấu | là vị trí ký tự hình ô vuông).
                            Code:
                            |Date     Time    T Ext    CO     Dial Number         Ring Duration Acct code  CC
                            Kiểm tra giá trị xem cái ô vuông đó là bao nhiêu để mà bắt ... chứ hiển thị ra Textbox thì có ý nghĩa gì . Giá trị của nó nằm ngoài giá trị font chữ thì nó ra ô vuông thôi .

                            Biết được giá trị của nó là bao nhiêu thì bắt chuỗi . Cho serial đợi đến khi nào bắt được cái ô vuông đó thì khai thác dữ liệu phía đằng sau .
                            Đếm cả khoảng trống , kí tự ra ... ta sẽ được chuỗi lớn nhất lúc đó ta thu chuỗi . Kết hợp với thời gian timeout là ta lấy được chuỗi dữ liệu .
                            Việc khai thác chuỗi dữ liệu thì xem vào Protocol , vị trí sắp xếp dữ liệu trên chuỗi !


                            Tôi không sài C# với .NET , mấy cái sản phẩm lập trình của microsoft nữa nên không giúp được mã chương trình ! chỉ đưa ra ý kiến mà thôi !
                            Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                            Comment


                            • #15
                              Nguyên văn bởi queduong Xem bài viết
                              Khi mình nhận được bằng C# thì đẩy lên TextBox thì nó hay có hình vuông ở đầu và ở cuối mỗi lần nhận được dữ liệu. Dùng HyperTerminal thì không thấy cái ký tự đó(dấu | là vị trí ký tự hình ô vuông).
                              Code:
                              |Date     Time    T Ext    CO     Dial Number         Ring Duration Acct code  CC
                              Kiểm tra giá trị xem cái ô vuông đó là bao nhiêu để mà bắt ... chứ hiển thị ra Textbox thì có ý nghĩa gì . Giá trị của nó nằm ngoài giá trị font chữ thì nó ra ô vuông thôi .

                              Biết được giá trị của nó là bao nhiêu thì bắt chuỗi . Cho serial đợi đến khi nào bắt được cái ô vuông đó thì khai thác dữ liệu phía đằng sau .
                              Đếm cả khoảng trống , kí tự ra ... ta sẽ được chuỗi lớn nhất lúc đó ta thu chuỗi . Kết hợp với thời gian timeout là ta lấy được chuỗi dữ liệu .
                              Việc khai thác chuỗi dữ liệu thì xem vào Protocol , vị trí sắp xếp dữ liệu trên chuỗi !


                              Tôi không sài C# với .NET , mấy cái sản phẩm lập trình của microsoft nữa nên không giúp được mã chương trình ! chỉ đưa ra ý kiến mà thôi !
                              Vấn đề ở đây là mình không biết khi đọc dữ liệu về nó là chuỗi lớn nhất hay không, rồi nguyên tắc nhận về trên cổng COM nhu thế nào, nếu biết được rùi thì xử lý quá đơn giản. làm sao để load toàn bộ buffer trong cổng COM về để xử lý kìa, chứ hiện tại là có dữ liệu đỗ về là code nó xử lý liền. nên không chính xác. Bạn có code nào giống HyperTerminal của windows không. ngôn ngữ gì cũng được. share cho mình với.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X