Pages: [1]   Go Down
Print
Author Topic: ช่วยด้วยครับ PIC18F452 ติดต่อ VB6 ผ่านทาง RS-232  (Read 11519 times)
0 Members and 4 Guests are viewing this topic.
TOPBBOY2006
Jr. Member
**
Offline Offline

Posts: 14


« on: May 10, 2009, 05:19:43 PM »

      ตอนนี้ทำโปรเจ็ทครับ ให้ PIC18F452 อ่านค่า Analog 8 ช่องครับ พออ่านค่าได้แล้วทั้ง 8 ช่อง ผมให้ค่าที่อ่านได้เก็บใน array ที่ชื่อว่า Value[8] แล้วให้ส่งค่าไปยัง VB ที่เดียวครับโดยผมใช้คำสั่งด้านล่างครับ

for(i=0;i<8;i++)
    {
    printf("%d",Value);
    }

ส่วน Code VB ผมเขียนให้มันรับข้อมูล มาเก็บไว้ในตัวแปร array ที่ชื่อว่า Value_Buffer[8] ครับ

CODE ที่ผมเขียน ประมาณนี้ครับ

********************************
Private Sub MSComm1_OnComm()

On Error Resume Next



If MSComm1.CommEvent = comEvReceive Then

       Value_Buffer(i) = MSComm1.Input

End If

i = i + 1

if i = 8 then
   i = 0
Endif
*************************************

ปัญหาที่เกิดขึ้นคือว่า VB มันรับค่ามามัวเลยครับ พอผมแก้ไข code ของ pic ใหม่เป็น


for(i=0;i<8;i++)
    {
    printf("%d",Value);
    delay_ms(50);           // เพิ่งคำสั่ง delay ให้มันถึงช่วงในการส่งข้อมูล
    }

ผลที่ได้คือ VB มันสามารถ รับ ค่าได้อย่างถูกต้องครับ แต่ข้อเสียคือถ้าข้อมูลที่ส่งมีจำนวนมาก มันส่งผลทำให้การส่งข้อมูลนั้นช้าเลยครับ

จึงเรียนถามเพื่อนๆหน่อยครับที่มีความรู้ด้าน VB ว่าเราควรเขียนรับค่าแบบไหนดีครับหรือมีวิธีไหนบ้างครับที่เราจะสามารถรับข้อมูลได้ไวกว่านี้ครับ (มือใหม่ครับ)
Logged
smitdh
Administrator
Hero Member
*****
Offline Offline

Gender: Male
Posts: 381


อาจารย์ที่ปรึกษา


« Reply #1 on: May 12, 2009, 11:37:15 PM »

แล้วลอง test กับพวก Hyperterminal ได้แล้วหรือยังครับ
ผมไม่ได้เล่น VB ซะด้วย

ใครเคยเล่นช่วยหน่อยครับ
Logged
TOPBBOY2006
Jr. Member
**
Offline Offline

Posts: 14


« Reply #2 on: May 13, 2009, 07:03:41 AM »

ผมลองทดลอง ติดต่อกับ Hyperterminal แล้วครับ ไม่มีปัญหาเลยครับ
Logged
HD_EE09
Jr. Member
**
Offline Offline

Posts: 19


Email
« Reply #3 on: May 13, 2009, 10:47:18 AM »

ผมเคยทำนะครับ แต่ผมไม่แน่ใจว่าความเร็วหรือช้ามันจะต่างกัน แบบใหนครับ

หลักการก็คือส่ง "\n" ไปพร้อมกับ "%d" เช่น printf("%d \n",dat);

แล้วให้ทาง VB เช็คว่าได้รับ "\n" หรือยัง

ถ้าได้รับแล้วแสดงว่าข้อมูลที่ส่งไปนั้นครบแล้วครับ จากนั้นก็รอรับข้อมูลชุดต่อไป

ถ้าใช้วิธีนี้ข้อมูลไม่น่าพลาดนะครับ แต่เรื่องความเร็วต้องลองดูครับ ได้ผลยังไงก็บอกด้วยนะครับ เผื่อมีอะไรช่วย

ได้ครับ
Logged
TOPBBOY2006
Jr. Member
**
Offline Offline

Posts: 14


« Reply #4 on: May 13, 2009, 10:40:22 PM »

ขอบคุณพี่ yongyoot  ครับ เดี๋ยวผมจะลองดูครับถ้าไปผลอย่างไง จะมาบอกครับ
Logged
Pages: [1]   Go Up
Print
 
Jump to: