Thông báo

Collapse
No announcement yet.

Giao tiếp USART làm sao lấy được chuổi ký tự.

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

  • Giao tiếp USART làm sao lấy được chuổi ký tự.

    Các cao thủ cho mình hỏi?

    Mình truyền USART từ máy tính xuống vi điều khiển.
    mình sử sử MCU atmega trinh biên dịch codevision , mình dùng hàm getchar() để nhận dữ liệu từ máy tính
    Mà hàm getchar chỉ nhận được một ký tự vậy làm sao để mình có thể nhận được một chuổi ký tự VD 123.

    Mong được giúp đỡ mình cảm ơn nhiều....

  • #2
    getchar() không phải chỉ nhận được một ký tự mà nhận dữ liệu kiểu kí tự. các số lớn có thể tách thành các bit thấp và bit cao rồi truyền, nhận
    Rễ của sự học tập thì đắng
    Quả của sự học tập thì ngọt

    Comment


    • #3
      Thank bạn nhiều, Vậy làm sao mình có thể nhận chuổi ký tự từ máy tính truyền xuống VD :123 bằng hàng getchar() .
      bài tập của mình là máy tính truyền xuống VDK một phép toán VD :2+3= VDK se trả lại kết quả là 5 , theo mình nghĩ mình phải lưu chuổi 2+3= vào mảng mới có thể xử lý được...

      Comment


      • #4
        123 nhỏ hơn 127 khi truyền thì cứ truyền bình thường mà. Nếu chỉ đơn giản như bài toán của bạn thì chỉ là truyền một số. Bạn cần làm chủ việc truyền dữ liệu qua USART đã. Nếu bạn truyền được dữ liệu bất kì qua USART thì sẽ làm được bài trên
        Rễ của sự học tập thì đắng
        Quả của sự học tập thì ngọt

        Comment


        • #5
          unsigned char x,chuc,dv;
          while(rx_counter>0); chuc=getchar()-48;
          while(rx_counter=0);
          while(rx_counter>0); dv=getchar()-48;
          while(rx_counter=0);
          x=chuc*10+dv;


          làm như thế này là nhận đc 2 số rồi.
          mình truyền từ máy tính ok rồi.nhưng bây giờ truyền từ chíp lên PC .đang gặp khó khắn.ai giúp chút nào

          Comment


          • #6
            thank các bãn nhiều...

            Comment


            • #7
              bạn có thể nói rõ hơn dựoc không, truyền từ máy tính xuống vi điều khiển đó, truyền một chuỗi bằng c#, sao vi điều khiển nhận có một kí tự à

              Comment


              • #8
                Nguyên văn bởi quangbuu Xem bài viết
                bạn có thể nói rõ hơn dựoc không, truyền từ máy tính xuống vi điều khiển đó, truyền một chuỗi bằng c#, sao vi điều khiển nhận có một kí tự à
                Bạn truyền một chuỗi kí tự thực chất là truyền đi từng byte dữ liệu, vi điều khiển sẽ nhận từng byte dữ liệu đó để xử lý.
                Để nhận được một chuỗi, mình hay làm cách như sau:
                - Bên truyền: mình thêm vào chuỗi truyền đi một số byte để đánh dấu bắt đầu một chuỗi, kết thúc chuỗi , chắc ăn cho thêm byte kiểm tra lỗi chuỗi truyền đi (checksum). Ví dụ muốn truyền đi một chuỗi kí tự "xyz" mình tuyền như sau: 0xaa, 0xbb, chuỗi kí tự muỗn truyền, 0xfd. Trong đó 0xaa, 0xbb là 2 byte kí hiệu để bắt đầu một chuỗi, 0xfd là byte kí hiệu kết thúc một chuỗi.
                - Bên nhận: dùng hàm ngắt nhận để nhận dữ liệu, dùng một biến kiểu mảng để nhận dữ liệu, biết được điểm bắt đầu, điểm kết thúc một chuỗi, việc của bạn giờ là xử lý dữ liệu từ các phần tử của mảng dữ liệu mà bạn nhận được.

                Chúc bạn thành công!
                Website:
                E-mail:

                Comment

                Về tác giả

                Collapse

                hohoanganhfu Trường ĐH khoa Hoc Tự Nhiên Tìm hiểu thêm về hohoanganhfu

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

                Collapse

                Đang tải...
                X