PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp cổng COM và LPT (http://www.picvietnam.com/forum/forumdisplay.php?f=44)
-   -   Giao tiếp RS232 trên PC bằng Visual Basic. (http://www.picvietnam.com/forum/showthread.php?t=869)

buitung31051989 12-09-2010 07:12 PM

các bác cho em hoi tý

em đang làm về phần truyền thông con pic 16F877A với máy tính nhưng không rõ lắm về cổng truyền thông của nó lắm
có phải là 2 chân 25 và 26 của nó không akj

newboystylew 21-09-2010 03:19 PM

Pic 16F877A giao tiếp port nối tiếp thông qua 2 chân C6 và C7. Mính cũng có 1 số đề tài giao tiếp gia Pic 16F877a với máy tính.If cai cần thì liên hệ.nick:hoangdtvt07b@yahoo.com.vn

hoanglongvnu 23-09-2010 12:12 PM

Mọi người cho e hỏi tí!

Hiện tại e đang làm đồ án tốt nghiệp về đề tài truyền thông sử dụng vdk PSoC, trong đó có phần xây dựng giao diện truyền thông giữa PSoC và PC thông qua RS232. E dùng VC++ để làm, e cũng có tham khảo tutorial của a Bắc và đã xây dựng được cơ bản vấn đề truyền nhận đơn giản. Bây giờ e muốn hiển thị chuỗi nhận được trên giao diện ở dạng hex và cả dạng string, nhưng ko biết làm thế nào để chuyển string nhận sang kiểu hex.
Vậy mong các bác chỉ bảo e với.

killua142 27-09-2010 04:48 PM

-Giúp mình Gửi dữ liệu dạng BINARY trong VB6 với !

-Em muốn gửi dữ liệu xuống VDK từ VB6 dạng binary nhưng send thì toàn bị lỗi cả,có ai bít giúp em với :

Private Sub Command2_Click()
On Error GoTo connectfalse
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
Exit Sub
connectfalse:
MsgBox "Loi Connect"
End Sub

Private Sub Command1_Click()
On Error GoTo sendfalse
Dim BytesToSend(0) As Byte
Dim Buffer As Variant

BytesToSend(0) = &H4A



Buffer = BytesToSend(0)
Text3.Text = Buffer

MSComm1.Output = Buffer


Exit Sub
sendfalse:
MsgBox "Loi Send"

End Sub



Private Sub Form_Load()

With MSComm1
.Settings = "9600,N,8,1"
.RThreshold = 2
.SThreshold = 0
.InBufferSize = 1024
.OutBufferSize = 1024
.InputMode = comInputModeBinary
.ParityReplace = ""
.CommPort = 1

End With
End Sub

Private Sub MSComm1_OnComm()
Dim BytesReceived(0) As Byte
Dim Buffer As Variant

If MSComm1.CommEvent = comEvReceive Then

Buffer = MSComm1.Input

BytesReceived(0) = Buffer
Text2.Text = BytesReceived(0)
End If
End Sub

ltn138 27-09-2010 11:20 PM

có bác nào bit giao tiếp RS232 trên PC bằng visual C chỉ em với

minhbien 03-11-2010 09:58 AM

@killua: tui góp ý bạn 1 chỗ, hình như ở mấy trang đầu anh Bắc có nói rồi thì phải:

Private Sub Command1_Click()
On Error GoTo sendfalse
Dim BytesToSend() As Byte
Dim Buffer As Variant

BytesToSend(0) = &H4A
BytesToSend(1) = &H01

Buffer = BytesToSend()

MSComm1.Output = Buffer

Hoặc:

Private Sub Command1_Click()

Dim Buffer As Variant
Buffer = Text3.Text
MSComm1.Output = Buffer

Cái này có vẻ nhanh hơn... hổng biết đúng hông nữa ;) , hình như dữ liệu truyền đi phải là kiểu mảng hoặc ký tự thì phải... còn Variant là all type ;)

TheHouse 22-11-2010 08:11 AM

Mọi người xem giúp, đoạn code C viết cho PIC 16F877a gửi dữ liệu lên PC & gửi từ PC về VDK mình làm hoài mà không chạy. Lúc nạp hay bị báo lỗi nữa chứ.

Đây là đoạn code gửi dữ liệu từ VDK lên PC, code trên PC mình lấy từ mấy bài hướng dẫn trên forum. Mà vẫn không thấy động tĩnh gì cả. Rồi từ PC gửi xuống cũng vậy.
Code:

#include <16f877a.h>
#use delay (clock=20000000)
#use rs232(baud=9600,parity=n,xmit=PIN_C6,rcv=PIN_C7)
#byte portb=0x06
#byte trisb=0x86
#byte portc=0x07
#byte trisc=0x87


void main()
{
trisb=0;
while(true)
{
  portb = 0x00;
  putc(0x00);
  delay_ms(100);
  portb = 0xff;
  putc(0xff);
  delay_ms(100);
}
}


Code trên PC:
Code:


Private Sub cmdClear_Click()
    Text1.Text = ""
   
End Sub

Private Sub cmdExit_Click()
Unload Me
End Sub

Private Sub cmdSend_Click()
    MSComm1.Output = Text2.Text
End Sub

Private Sub Form_Load()
    cmdSend.Caption = "&Send"
    Text1.Text = ""
    Text2.Text = ""
    Text1.Enabled = False
    cmdExit.Caption = "&Exit"
    With MSComm1
        .Settings = "9600,N,8,1"
        .CommPort = 4
        .RThreshold = 1
        .SThreshold = 0
        .InputMode = comInputModeText
        .InputLen = 0
        .Handshaking = comNone
        .InBufferSize = 1024
        .OutBufferSize = 1024
        If .PortOpen = False Then
          .PortOpen = True
        End If
       
    End With
End Sub

Private Sub MSComm1_OnComm()
    Dim Buffer As Variant
    If MSComm1.CommEvent = comEvReceive Then
        Text1.Text = Text1.Text + MSComm1.Input
    End If
End Sub

Vừa chạy thực tế, vừa chạy trên mô phỏng, nên mình có chuyển đổi qua lại giữa COM 4 & COM 1

toilatoi000 30-12-2010 08:58 AM

Mình bị lỗi thế này khi mỡ file của anh hải có bạn nào bit cách hướng dẫn giúp mình thiết lập với. cám ơn nhiều lắm.

http://upload.hoiquandientu.com/hlep.jpg

stupid11 13-04-2011 12:08 AM

anh Bắc cho em hỏi thời gian để pic truyền xong 1 byte dữ liệu là bao nhiêu..nếu tốc độ baud=9600 và công thức tính như thế nào ạ...Vì em đang làm truyền thông qua RS-485 nên phải tính kỹ thời gian này để đổi hướng MAX-485..nếu không thì đang truyền mà mình đổi hướng sang nhận thì sẽ xảy ra tình trạng mất data.

stupid11 16-04-2011 01:37 PM

TEST truyền thông UART qua cổng com ẢO
 
1 Attachment(s)
Mình vừa viết xong chương trình giao tiếp với VB qua cổng COM ảo và Proteus bạn nào hứng thú với chương trình này thì mình sẽ hướng dẫn.

đây là clip mô phỏng.Các bạn xem qua.

c4dt1 26-05-2011 10:57 AM

kính chào các bác trên diễn đàn
em mới nhập môn,nên em không biết làm thế nào để VB nhận 1 kí tự và hiển thị kí tự đó dưới dạng số thập phân.từ 8051 em truyền lên 0x31,đáng lẽ VB nhận và hiển thị số 1 trong txtnhan.text =1;nhưng mà nó cứ hiện cái j đâu ấy,em cấu hình mscoom1.inputmode=0 tức là Ascci ,vậy có bác nào biết thì chỉ giáo cho em vài đường

hangocminh1989 16-07-2011 01:34 AM

các bác ơi, bác nào biết là tại sao em truyền dừ liệu từ pic lên máy tính thì em chỉ truyền được tới 255 thôi, 256 là nó sai bét.....em truyền số 999 nó hiển thị thành số 231, số 998 nó lại hiện thành 230, nhưng số 1000 thì nó lại hiển thị đíng 1000. chả hiểu cái quái gì chỗ này cả. em đã tách từng số ra trong chuỗi rồi em mơi truyền lên máy tính, bác nào biét chỉ em cách xử lí cái chỗ này với, hic

hein_ts 17-07-2011 02:37 AM

Cũng lạ nhỉ? Bạn nên gửi code lên để mọi người cùng xem chứ?

tranbahung80 17-07-2011 03:17 PM

SỬA CHỮA ... thiết bị công nghiệp
 
Chào tất cả mọi người!
Ngày sưa mình làm về VĐK, điện tử cơ bản nhiều. Nhưng lay đã bỏ sang làm điện công nghiệp, nói chung là sửa mọi thứ cả công ty và sửa thuê.
Mình cũng đac thử một số thiết bị công nghiệp được thay thế bằng VĐk để làm nhưng không hiệu quả vì giá thành cao.
Anh em lào mà làm điện tử để biết thì không sao.. nhưng để cạnh tranh thì phải có hệ thống... Ít nhất như Addmin Bình Anh thì mới ổn một là dòng sản phẩm mới hai là độc chiếm một lãnh vực nào...
Cũng như mình phải nói sau 2,5 năm làm trong ngành gạch Ceramic thì độc chiếm về dòng máy Phân loại SACMI, LÒ NUNG CÁC HÃNG, MÁY ÉP CỦA SACMI loại chạy máy vi tính.
Thì cũng khá dù còn làm điện tử thấy kém quá.
Hi vọnh một ngày gần đay mình sẽ Pot các bài ví dụ về Pic16f877A, mình có ý là những ai daoloatd thì ủng hộ vào quỹ nào đó....vd chất độc da cam ..
Hi vong cửa mình sẽ thành hiện thực.

tdm 18-07-2011 10:23 AM

Trích:

Nguyên văn bởi hangocminh1989 (Post 46958)
các bác ơi, bác nào biết là tại sao em truyền dừ liệu từ pic lên máy tính thì em chỉ truyền được tới 255 thôi, 256 là nó sai bét.....em truyền số 999 nó hiển thị thành số 231, số 998 nó lại hiện thành 230, nhưng số 1000 thì nó lại hiển thị đíng 1000. chả hiểu cái quái gì chỗ này cả. em đã tách từng số ra trong chuỗi rồi em mơi truyền lên máy tính, bác nào biét chỉ em cách xử lí cái chỗ này với, hic

bạn khai báo biến chứa giá trị 999 là biến 8bit hay 16bit.


Múi giờ GMT. Hiện tại là 09:28 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam