RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

VC++ và COM

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts

  • encoder
    replied
    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.

    Leave a comment:


  • nghoang
    replied
    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 ạ??

    Leave a comment:


  • nghoang
    replied
    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

    Leave a comment:


  • encoder
    replied
    để convert số nguyên thành string bạn dùng thư viện có sẵn trong trình biên dịch. Tôi chưa lập trình với AVR bao giờ nên không thể chỉ cho bạn cụ thể (đành nhờ các pro về AVR), nhưng thông thưong với C các hàm này hay nằm trong thư viện "stdlib.h" và hàm convert thường là itoa(...) : số nguyên - > string, hay ftoa(...): số thực -> string.
    một số nguyên thương được biểu diễn thành 16bit = 2bytes.
    ví dụ

    2007 = 00000111 11010111 (mô tả theo nhị phân) = 07 D7 (mô tả theo hexa)
    theo đó 07 là hight byte
    và D7 gọi là low byte
    số nguyên 2 = 0x0002 và 1 = 0x0001 -> chắc bạn đã hiểu về khung bản tin ở trên.
    vói một số nguyên n bạn có thể lấy hight_byte và low_byte của nó theo bằng cách
    hight_byte = n >> 8; // dịch phải 8 bits
    low_byte = n & 0xff; hoặc chỉ cần: low_byte = n nếu bạn khai báo low_byte có kiểu là byte.

    Leave a comment:


  • techpro
    replied
    Nguyên văn bởi nghoang Xem bài viết
    cách convert một giá trị thành string ta làm cách nào vậy các bác?? em cảm ơn các bác nhiều!!!

    hight byte và low byte là gì ạ???

    em xin lỗi vì hỏi nhiều quá, nhưng thực sự em chưa nắm được nội dung của bác encoder chỉ ạ. cảm ơn các bác
    Bạn đọc trong help của trình dịch CodeVision sẽ có. Lâu rồi tôi không làm nên không nhớ chính xác. Còn để làm tỉ mỉ phần truyền thông thì cũng được nhưng làm ngay lúc này với bạn thì có thể hơi khó.
    Chúc bạn thành công

    Leave a comment:


  • nghoang
    replied
    cách convert một giá trị thành string ta làm cách nào vậy các bác?? em cảm ơn các bác nhiều!!!

    hight byte và low byte là gì ạ???

    em xin lỗi vì hỏi nhiều quá, nhưng thực sự em chưa nắm được nội dung của bác encoder chỉ ạ. cảm ơn các bác

    Leave a comment:


  • encoder
    replied
    tôi chẳng biết gì về AVR cả nhưng nếu bạn muốn truyền một số thực thì cũng có nhiều cách, cách hao tốn tài nguyên nhất là convert nó thánh string rồi truyền lên PC, PC đọc string rồi lại convert thành số thực. Có thể dùng cách truyền thành 2 số nguyên, số thứ nhất hiển thị giá trị trước dấu "," và số tiếp theo là phần thập phân. PC nhận được lại ghép chúng vào thành số thực. Ví dụ muốn truyền 1.2 chẳng hạn bạn truyền một khung như sau:
    xx // start byte
    0x00 // hi byte
    0x01 // low byte
    (yy) // có thể thêm ki tự '.' nếu muốn
    0x00 // hi byte
    0x02 // lơ byte
    zz // stop byte

    còn nếu muốn kiểm tra PC nhận có chính xác hay không thì bạn có thể test bằng cách cho AVR truyền một chuỗi hằng số nào đó. nếu PC nhận được chuỗi hằng số đúng như vậy thì là chính xác.

    Leave a comment:


  • techpro
    replied
    Nguyên văn bởi nghoang Xem bài viết
    vâng đúng rồi bác ạ
    Vậy bạn tìm hiểu kỹ tài liệu đó là có thể làm được. Xong một lưu ý nữa, bạn hãy chuyển từ giá trị điện áp đọc được (đọc giá trị kênh analog và quy đổi) thành xâu ký tự để truyền. Khi truyền nên thêm hai kí tự kết thúc là <CR><LF> để việc đọc dữ liệu trên máy tính được tiến hành dễ dàng hơn. Hi vọng bạn sẽ làm được

    Leave a comment:


  • nghoang
    replied
    vâng đúng rồi bác ạ

    Leave a comment:


  • techpro
    replied
    Nguyên văn bởi nghoang Xem bài viết
    character from the serial port called ReadByte.

    ví dụ 2 là để đọc một chữ (ký tự) chứ ko phải đọc giá trị truyền vào từ AVR=> MAX => COM bác ạ..

    Em đang cần truyền 1 giá trị (dạng số thực ví dụ 1.2 volt, 2.3volt từ cảm biến => ADC => AVR> MAX=>COM bác ạ)

    xin chờ sự giúp đỡ từ các bác..
    Thực chất vấn đề của bạn là đọc giá trị từ một kênh analog của AVR sau đó chuyển thành điện áp và gửi lên qua Max232 qua cổng COM lên máy tính và hiển thị trên máy tính phải không?

    Leave a comment:


  • nghoang
    replied
    Nguyên văn bởi techpro Xem bài viết
    Nếu trên máy tính thì để thử nghiệm truyền thông mình thường nối chân 2 và chân 3 của cổng COM rồi thử truyền gì thì nhận được ấy. Bạn thử làm như vậy với vi điều khiển nghĩa là nối chân RxD và TxD của vi điều khiển với nhau sau đó thử truyền thông xem nhé. Chúc bạn thành công
    Ý em là em nhận vào chứ ko phải truyền ra COM ạ.

    Vậy có cách nào để biết chương trình nhận (đọc ) từ COM của mình là đúng bác nhĩ???

    đa tạ sự trợ giúp của bác

    Leave a comment:


  • nghoang
    replied
    character from the serial port called ReadByte.

    ví dụ 2 là để đọc một chữ (ký tự) chứ ko phải đọc giá trị truyền vào từ AVR=> MAX => COM bác ạ..

    Em đang cần truyền 1 giá trị (dạng số thực ví dụ 1.2 volt, 2.3volt từ cảm biến => ADC => AVR> MAX=>COM bác ạ)

    xin chờ sự giúp đỡ từ các bác..

    Leave a comment:


  • techpro
    replied
    Nguyên văn bởi nghoang Xem bài viết
    bác ơi có cách nào giả xung cho chân COM nhận vào ko?? vì em chết con MAX rồi, hichic (em tính giả tín hiệu gửi tới COM) rồi sáng mai đi mua gấp con MAX, đa tạ
    Nếu trên máy tính thì để thử nghiệm truyền thông mình thường nối chân 2 và chân 3 của cổng COM rồi thử truyền gì thì nhận được ấy. Bạn thử làm như vậy với vi điều khiển nghĩa là nối chân RxD và TxD của vi điều khiển với nhau sau đó thử truyền thông xem nhé. Chúc bạn thành công

    Leave a comment:


  • nghoang
    replied
    Cho em hỏi thêm chút, bằng cách nào để mình test giá trị đã đọc đúng chưa ạ???? thankss bác nhiều

    Leave a comment:


  • nghoang
    replied
    bác ơi có cách nào giả xung cho chân COM nhận vào ko?? vì em chết con MAX rồi, hichic (em tính giả tín hiệu gửi tới COM) rồi sáng mai đi mua gấp con MAX, đa tạ

    Leave a comment:

Về tác giả

Collapse

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

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

Collapse

There are no results that meet this criteria.

Đang tải...