PDA

View Full Version : Giao tiếp RS232 trên PC bằng Visual Basic.


ngohaibac
13-01-2007, 11:34 PM
Chào các bạn.

Mình mở luồng này để hướng dẫn các bạn lập trình giao tiếp RS232 bằng phần mềm Visual Basic 6.0 của Microsoft.

Do site tailieuvietnam.net đang có vấn đề về nhỏ nên mình không upload file lên đó được. Tuy nhiên mình vẫn upload chương trình viết bằng VB để các bạn tham khảo.

Giao diện của chương trình như sau:

http://i36.photobucket.com/albums/e46/ngohaibac/Serial%20Port/PVN_0112.gif

Hình 1: Giao diện chương trình đơn giản thứ 1 dùng VB.

Chương trình này là một ví dụ nhỏ bạn truyền một loạt byte rùi nhận về (mình nối 2 chân 2 và 3 để test chương trình). Các bạn có thể ứng dụng nó trong mạng truyền thông dùng các giao thức truyền khác nhau. Trong ví dụ của mình truyền đi 11 byte gồm 1 byte start, 8 byte dữ liệu, 1 byte CRC, 1 byte stop.

Chúc các bạn thành công.

odi
17-01-2007, 03:34 PM
Bạn có thể nói rõ hơn một chút về cách tính CRC trong VB cho tớ được không? Thanks.

bta
18-01-2007, 10:48 AM
Luồng mới hay wa. Tớ muốn hỏi về truyền, nhận theo khung truyền dùng giao thức Modbus? Tức là cần tính mã kiểm lỗi của khung nhận được và so sánh mã kiểm lỗi của khung truyền. Nếu giống thì truyền tiếp, còn ko thì gửi yêu cầu truyền lại. Thanks.

ngohaibac
20-01-2007, 01:26 AM
Bạn có thể nói rõ hơn một chút về cách tính CRC trong VB cho tớ được không? Thanks.

Chào bạn.

Rất cảm ơn sự quan tâm của bạn đến chủ đề này. Việc lập trình truyền nhận theo một giao thức nhất định rất có ích cho các dự án về Mạng truyền thông công nghiệp hay tự động hoá toà nhà,...

Tuy nhiên, mình chưa lập trình xử lý kiểm soát lỗi CRC trong VB. Mình sẽ xem xét help MSDN rùi trao đổi với các bạn sau. Bạn nào nghiên cứu trong VB rùi xin post lên để cho mọi người cùng tham khảo học tập.

Mình xin đưa ra một vài thông tin về mã kiểm lỗi CRC:

Đầu tiên các bạn chọn một đa thức phát G được qui ước dưới dạng nhị phân tức các hệ số của nó chỉ có giá tri 1 hoặc 0 tương ứng với các chữ số trong một dãy bit.

Ví dụ:
Dạng đa thức: G = x^7 + x^6 + x^5 + (0x^4 + 0*x^3) + x^2 + (0*x^1) + 1
Dạng nhị phân: G = 1 1 1 0 0 1 0 1

Nguyên tắc cơ bản của phương pháp mã hoá CRC:

Giả sử đa thức G có bậc n, ví dụ x^3 + x + 1 tương ứng với dãy bit {1011}. Dãy bit mang thông tin nguồn I được thêm vào n bit 0 và coi như một đa thức nhị phân P. Ví dụ thông tin nguồn là {110101} tgù sau khi thêm 3 bit 0, ta có dãy bit {110101000} tương ứng với đa thức P = x^8 + x^7 + x^5 + x^3.
Đa thức P được chia cho đa thức G dựa vào các qui tắc đơn giản của phép trừ không có nhớ (chính là phép XOR từng bit) (trừ 2 số bằng nhau kết quả = 0, trừ 2 số khác nhau kết quả = 1).
Không cần quan tâm tới kết quả của phép chia, phần dư R của phép chia được thay thế vào chỗ của n chữ số 0 bổ sung trong P, tức là ta có D = P + R. Theo tính chất của phép chia đa thức nhị phân, nếu D-R chi hết cho G thì D = P + R cũng vậy. D chính là dãy bit được gửi đi thay cho I.
Giả sử dãy bit nhận được là D' không chia hết cho G thì tức là D khác với D', ta có thể khẳng định được bức điện chắc chắn bị lỗi. Ngược lại, nếu D' chi hết cho G thì xác xuất rất cao là bức điện nhận được không có lỗi. Ta nói "xác suất cao", bởi mỗi bit trong thông tin nguồn tham gia nhiều vòng (cyclic) vào tính toán thông tin bổ trợ nên khả năng "dữ kiện" sai mà kết quả đúng" là rất it.


(Trích Pgs. Ts. Hoàng Minh Sơn - "Mạng truyền thông công nghiệp" NXB KHKT 2006)

Dựa trên nguyên tắc này các bạn có thể tạo ra ý tưởng cho việc lập trình của mình đó.

Chúc các bạn thành công.

bta
29-01-2007, 03:13 AM
Theo như một bài tớ được bít thì mã kiểm lỗi CRC có thể dùng bảng để tra giá trị thay vì phải tính toán. Bảng CRC thì có rất nhiều trên mạng. Đây là một ví dụ về cách dùng bảng CRC trong VB. Bạn nào có ý kiến hay thì đưa lên nhé.Thanks.

signin
20-04-2007, 10:03 PM
Gởi Anh Hải Bắc!

Em Muốn dùng phương pháp kiểm tra lỗi CRC, Em có hiểu phương pháp này nhưng thực sự không biết cách chọn đa thức sinh, Anh có thể chỉ không? em muốn dùng 1 byte cho CRC

ngohaibac
21-04-2007, 12:08 PM
Chào em.

Đa thức sinh em có thể chọn tùy ý mà em. Quan trọng là 2 bên truyền và nhận phải cùng kiểu mã hóa CRC để việc kiểm lỗi là đúng em ạ.

Em dùng CRC 1 byte thì chọn G là đa thức bậc 8.

Chúc em thành công.

signin
14-05-2007, 06:37 PM
Mấy hôm nay Em thi nên không lên mạng được, Cảm ơn Anh Hải Bắc nhiều!

seraph
18-05-2007, 01:31 AM
may dai ca! em dang lam do an dieu khien dco buoc co giao tiep may tinh xai VB, co su phu nao lam rui chi giup em voi! Hix, em dang gap lam. co file up len cho em thi cang tot. Xin da ta!!!!

moihocpic1985
29-05-2007, 08:09 PM
Cac anh co kinh nghiem lam viec voi ca 2 phan mem VB 6 va Visual C++ roi co the chi cho toi biet giua 2 phan mem co diem gi khac nhau, uu nhuoc diem trong dieu khien? Nen hoc phan mem nao de co the dap ung khi di lam ngoai thuc te? Thanks

controlufo
02-07-2007, 05:26 PM
các bạn thân :

cả tháng qua tui theo dõi cái mục này rùi áp dụng vào cái chương trình của tui mà sao giờ này nó vẫn chưa chạy oải wá trời đành phải nhờ các bạn code dùm thui chư mò chắc tới tết nguyên đán wá ...

tui viết code vb trong access ...sử dụng mscomm32.ocx đã đăng ký ổn
cáp từ thiết bị ngoại vi xuất từ com 25 pins vào máy ở com 9pins

các bạn code dùm mình đưa số liệu vào ô "chisocan" trong form "nhap" nhé ..
mình thực sự đắp chiếu .com rùi

sau đây là cái đoạn code dở hơi của mình :



Option Compare Database
Dim inputstring As String

Private Sub chiso_Click()


MSComm1.Settings = "9600,N,8,1"
MSComm1.CommPort = 1
MSComm1.PortOpen = True
inputstring = MSComm1.Input
MSComm1.Handshaking = 3
Forms!nhap!chisocan = MSComm1.Input
MSComm1.PortOpen = False


End Sub

bạn nào có cái đầu bác học muốn hướng dẫn cho tui xin vui lòng mail hoặc chát google talk và yahoo messenger trực tiếp cho tui qua nick controlufo@yahoo.com controlufo@gmail.com

xin chân thành cám ơn tiger bể đã tài trợ chương trình này hihihihhiiiiii

hopeman
02-07-2007, 05:55 PM
thực sự là một chuyên mục rất thú vị của bác ngohaibac

ngohaibac
09-07-2007, 09:31 AM
Chào bạn controlufo.

Chương trình của bạn như thế là hoàn toàn không ổn rùi. Các thông số thiết lập cho MSCOMM thì bạn phải thiết lập ngay từ đầu chứ.

Còn dữ liệu nhận từ RS232 bạn nên viết trong hàm ngắt. Chứ tự nhiên bạn inputstring = MSComm1.Input thì dữ liệu ở đâu mà nhận nhỉ :D. Với lại setting cho đối tượng mscomm đó cũng không đúng.

Chương trình đơn giản khác bạn xem tại đây:
http://dientuvietnam.net/forums/showthread.php?t=5281

Chúc bạn thành công.

controlufo
09-07-2007, 12:29 PM
tui sưu tầm các hướng dẫn của mr maneger(ngohaibac) đem áp dụng sài không được trong form access
form nhap
texbox vao

tui có gửi file access kèm theo mong manager box """"design"""" lại dùm ....giúp tui đi tui chuyển sang dề tài khác ngâm cứu chứ cái vụ này lấy của tui mất hơn 1 tháng rùi ngohaibac ui...



Dim x As Variant

Private Sub Form_Load()
On Error Resume Next
With MSComm1
If .PortOpen = True Then .PortOpen = False
.CommPort = 2
.Settings = "9600,N,8,1"
.InBufferSize = 2000
.InputLen = 0
.OutBufferSize = 64
.PortOpen = True
End With
End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False
MSComm1_OnComm
Timer1.Enabled = True
End Sub

Private Sub MSComm1_OnComm()
With MSComm1
If .InBufferCount >= 1 Then
x = MSComm1.Output
Forms!nhap!vao = x
End If
End With
End Sub




mong hồi âm
xin chân thành cám ơn....chúc công việc vui vẻ

ngohaibac
09-07-2007, 05:03 PM
Forms!nhap!vao = x

là cái gì đó hả bạn?

Nếu là editbox thì phải gán vào thuộc tính text của nó chứ nhỉ ? Bạn xem lại nhé.
Sao bạn k upload của project của bạn lên để mình xem chứ.

Đề nghị viết tất cả code trong tag code cho dễ nhìn nhé.

Chúc bạn thành công.

signin
12-07-2007, 11:44 AM
Kính gởi: anh Hải Bắc !

Em tên là Trung, học ngành cơ khí. Em đang làm đồ án tốt nghiệp, hiện em đang gặp sự cố ở khâu truyền dữ liệu từ máy tính xuống vi điều khiển 89S52. Em đã làm đi làm lại nhiều lần nhưng không được.

Mong anh Hải Bắc xem giúp source code và hướng dẫn dùm em. Vào ngày 18 tháng 7 em bảo vệ đồ án tốt nghiệp, chỉ còn trục trặc ở khâu này thôi !

Anh có thể chỉ em:
• viết code cho visual basic truyền được khoảng 10 byte hex mà vi điều khiển nhận được
• viết code cho vi điều khiển 89S52 nhận đươc 10 byte hex do visual basic gởi
Và cho em hỏi :
• Khi vi điều khiển gởi đi nội dung “0FFh” thì máy tính nhận được ký tự gì, và ngược lại.

Cảm ơn anh Hải Bắc nhiều, thật sự em rất ngưỡng mộ anh, chúc anh luôn vui vẻ và hạnh phúc !

Code:

org 000h
ljmp main

org 0023h
ljmp ngat_noitiep

org 0030h

main: mov p1,#0
mov TMOD,#20h ; bo dinh thoi 1 che do 2
mov TH1,#-3 ; gia tri nap lai
setb Tr1 ; bo dinh thoi hoat dong
mov SCON,#01010010b
mov IE,#90h ; cho phep ngat noi tiep
sjmp $

ngat_noitiep:
mov p1,#0ffh
clr TI
reti
end



Code:
Private Sub cmdPause_Click()
MSComm1.Output = "0"
End Sub

Private Sub cmdPlay_Click()
MSComm1.Output = "1"
End Sub

Private Sub Form_Load()
With MSComm1
.Settings = "9600,N,8,1"
.RThreshold = 1
.SThreshold = 0
.InBufferSize = 1024
.OutBufferSize = 1024
.InputMode = comInputModeText
.ParityReplace = ""
.CommPort = 2
If .PortOpen = False Then
.PortOpen = True
End If
End With
End Sub
Private Sub MSComm1_OnComm()
Dim Buffer As String
Dim size As Byte
Dim c As Integer
Dim i As Integer
Dim chay As Integer
Text1.Text = ""

If MSComm1.CommEvent = comEvReceive Then ' n?u là s? ki?n truy?n
Buffer = MSComm1.Input
Text1.Text = Mid(Buffer, 1, 1)
End If
End Sub

ngohaibac
12-07-2007, 12:05 PM
Khi vi điều khiển gởi đi nội dung “0FFh” thì máy tính nhận được ký tự gì, và ngược lại.
Nếu bạn hiển thị kí tự đó thì nó sẽ tương ứng với kí tự có mã ASCII = 0xFF. Thực tế giá trị này sẽ được lưu vào 1 byte nên bạn có thể không cần quan tâm nó là kí tự gì mà vãn truyền nhận đúng giá trị.

ngat_noitiep:
mov p1,#0ffh
clr TI
reti
end

Code trên vi điều khiển thế này là hỏng rùi. Vì bạn biết ngắt truyền, khi thanh ghi bộ đệm truyền rỗng thì sẽ nhảy vào ngắt nối tiếp. Khi truyền xong nó lại nhảy vào đây. Vậy không nên dùng ngắt truyền.

Bạn chỉ nên dùng ngắt nối tiếp khi nhận dữ liệu mà thôi. Nhớ xóa cờ nhớ RI nhé.

Còn chương trình trên PC chắc OK rùi. Bạn xem thếm code tại đây:
http://dientuvietnam.net/forums/showthread.php?t=5281

Chúc bạn thành công.

controlufo
12-07-2007, 05:49 PM
bạn ngohaibac biết thì chỉnh dùm tui lun đi
chương trình tui gửi kèm theo lun đó
mình bên trường tự nhiên nên cái khoản truyền thông qua thiết bị này các thày cô cũng chẳng giúp gì cho tui được đành phải nhờ bạn thui


bạn bung file codedum.rad chỉnh lại đoạn code dùm nhe
form trong acess khác trong vb
nếu bạn biết giúp tui trọn bộ nhe

form chỉ có 1 ô textbox "vao" liệu tui có lấy được số liệu cân từ đầu dọc toledo được không


mong hùi âm

thank

VNArmy
12-07-2007, 10:13 PM
Muốn đọc dữ liệu từ đầu cân thì không đơn giản đâu. Bởi vì mình đâu có biết được format dữ liệu của đầu cân. Để debug format dữ liệu này bạn cần phải có thiết bị đầu cân thật và dùng Hyper terminal mà debug.
Chúc thành công.

ngohaibac
13-07-2007, 08:00 AM
To controlufo:

Chào bạn.

Mình đã hướng cho bạn suy nghĩ và tìm hiểu rùi mà. Như thế này nhé, bạn sẽ làm như sau:

- Đầu tiên test xem module UART của 8051 có hoạt động ok không bằng cách đầu tiên gửi lên PC, sau đó tiếp tục là PC gửi xuống và vi điều khiển nhận được gì thì gửi lại luôn. Bạn dùng Hyper Terminal để debug. Bạn cần đọc lại module UART trong 8051, cái này thì rất đơn giản rùi, sách vở nào cũng nói cả.

Bạn đọc thêm 8051 Tutorial: Serial Communication tại đây:
http://www.8052.com/tutser.phtml nói quá dễ hiểu và đơn giản. Hoặc search google với từ khóa 8051 uart

- Sau khi xong code trên 8051 bạn làm lại trên PC gửi dữ liệu xuống 8051. Sau đó mới phát triển lên là gửi 10 kí tự và đọc 10 kí tự.


Chúc bạn thành công.

hieucdtspk
24-07-2007, 09:14 PM
Chào Hải Bắc và mọi người!
Các bài viết của bạn rất hay. Mình cũng đang nghiên cứu về truyền dữ liệu qua cổng COM bằng VB, mọi thứ OK, nhưng mình còn một rắt rối nhỏ, mong Bắc chỉ giúp!
Trong các bài viết, có một bài Bắc nói về việc kết nối sẽ bị lỗi nếu cổng đó đang bị sử dụng bởi một ứng dụng khác.
Nếu nhận ra cổng nào đang bị chiếm dụng và set qua cổng khác bằng tay thì không có gì đáng nói. nhưng ở đây, mình muốn chương trình tự động lựa chọn cổng còn trống mà thiết lập kết nối với nó. mò mẫm trong các thuộc tính của MSCOMM thì chẳng thấy. mình muốn công việc này thực hiện tự động bằng cách kiểm tra thuộc tính nào đó của MSCOMM (nếu có) trước khi thực hiện .PortOpen = True.
Bắc và các bạn biết vấn đề này thì chỉ giúp tớ nhé!
Cám ơn nhiều lắm...

ngohaibac
25-07-2007, 02:15 AM
Chào bạn.

Vấn đề này mình đã làm good rùi. Mình đã làm với VC++.net hay VC++ 6.0 cũng thế.

Để mình xem lại code và upload lên đây cho bạn sau nhé. Code này dùng hàm API chứ không có trong thuộc tính nào của MSCOMM đâu.

Bạn có thể qua bên luồng về lập trình bằng VC++.Net

Chúc bạn thành công.

ngohaibac
25-07-2007, 10:35 AM
Đây là code để test xem một port có tồn tại hay là không tồn tại hoặc đang bị ứng dụng khác chiếm giữ bằng cách dùng hàm API là CreatFile. Bạn dễ dàng tra đối số của nó trong MSDN.

Visual C++ hoặc Visual C++.Net

bool CRS232Dlg::COMAvailable(int COMNum)
{
HANDLE hCOM;
CString portName;

portName.Format(_T("COM%d "),COMNum);

hCOM = CreateFile(portName, // Specify port device: default "COM1"
GENERIC_READ | GENERIC_WRITE, // Specify mode that open device.
0, // the devide isn't shared.
NULL, // the object gets a default security.
OPEN_EXISTING, // Specify which action to take on file.
FILE_ATTRIBUTE_NORMAL, // default.
NULL); // default.

if (hCOM == INVALID_HANDLE_VALUE){
return false;
}
else{
BOOL ret = CloseHandle(hCOM);
return true;
};
}


Visual Basic:

'// Return TRUE if the COM exists, FALSE if the COM does not exist
Public Function COMAvailable(COMNum As Integer) As Boolean
Dim hCOM As Long
Dim ret As Long
Dim sec As SECURITY_ATTRIBUTES

'// try to open the COM port
hCOM = CreateFile("\.\COM" & COMNum & "", 0, FILE_SHARE_READ + _
FILE_SHARE_WRITE, sec, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
If hCOM = -1 Then
COMAvailable = False
Else
COMAvailable = True
'// close the COM port
ret = CloseHandle(hCOM)
End If
End Function

Tham khảo: http://www.developerfusion.co.uk/show/21/2/

Chúc bạn thành công.

toanck86
08-11-2007, 09:02 PM
sao luồng này dừng luôn vậy các bác, em đang theo dõi và học về lập trình giao tiếp qua cổng com, bác nào có chương trình gì hay up lên cho mọi người tham khảo trap đổi nhé

tienbkit
03-03-2008, 09:31 PM
Cho mình hỏi thêm chút:
Nếu như mình sử dụng bắt tay bằng phần mềm (dùng 2 tín hiệu Xon & Xoff) thì chỉ cần thiết lập chế độ này( MSComm1.Handshaking = comXOnXoff) là các thiết bị tự động thực hiện hay có cần điều khiển thêm gì ko?

Longnguyen
08-03-2008, 02:43 PM
Anh Bac xem lai gium. Chuong trinh Rs232.exe khong chay duoc.

lttet
17-03-2008, 10:23 PM
Xin chào ! cho em hỏi cách truyền file qua cổng com như thế nào nhỉ? em đang làm đề tài này ! mấy anh giúp em với ! Dùng bằng VB.

ltpbkis
18-03-2008, 11:21 AM
tôi cũng đang làm đồ án vi xử lý liên wan đến giao tiếp PC va VB va vi xử lý.bác nào cho tôi biết nguyên lý để PC nhận dữ liệu từ VXL lên PC rồi lại hiện wa giao dien VB như thế nào?và nếu có mã nguồn thì cho tôi với. VXL tôi dùng PIC

ha_vy_cson
30-03-2008, 08:09 PM
các bác ơi! cho em hỏi một tý...
em đang lập trình giao tiếp giữa pc và pic 16f877a, em muon truyen một chuổi từ máy tính bằng vb6 đến pic thi nên viết code trên VB như thế nào và viết hàm nhận trong ccs như thế nào........

quoctrung
31-03-2008, 03:49 PM
chào bác ngohaibac bác có thể giúp mình 1 số tài liệu về lập trình vb giao tiếp bằng cổng com với plc s7200 và mình dùng phần mềm pc acess để upload từ plc lên máy tính để giám sát mong bạn giúp mình

89c2051
04-04-2008, 11:34 AM
anh Bắc ơi ,giúp em đổi data dạng C ( 0x00,0xAF, 0xFF,...) lưu trong 1 file font ra dạng mã hex tương ứng mà VB6 có thể truyền qua cổng com được ấy (&H00,&HAF,&HFF,...),em muốn load nó để gửi xuống bảng điện tử ! cảm ơn anh trước nha ( cái này em bó tay.com lun )

namqn
04-04-2008, 06:35 PM
anh Bắc ơi ,giúp em đổi data dạng C ( 0x00,0xAF, 0xFF,...) lưu trong 1 file font ra dạng mã hex tương ứng mà VB6 có thể truyền qua cổng com được ấy (&H00,&HAF,&HFF,...),em muốn load nó để gửi xuống bảng điện tử ! cảm ơn anh trước nha ( cái này em bó tay.com lun )
Nếu bạn có thể đọc được tập tin text đó, bạn chỉ cần dò chuỗi "0x", sau đó lấy ký tự thứ nhất chuyển thành 1 nibble (4-bit), dịch trái nó 4 bit, rồi cộng với kết quả chuyển ký tự thứ hai thành 1 nibble, sau đó tìm chuỗi "0x" kế tiếp, và tiếp tục quy trình. Như vậy bạn sẽ có các giá trị hex chính xác.

Tôi cho là các ngôn ngữ lập trình cấp cao đều có sẵn công cụ để bạn làm các việc trên.

Nếu bạn chỉ muốn chuyển dạng 0x00 thành &H00 thì chỉ cần Notepad và lệnh Replace.

Thân,

nguyenchituyen
06-04-2008, 06:05 PM
code co day du thong tin wa cong M trong VB va co API do tim cong COM

namqn: đề nghị bạn viết tiếng Việt có dấu.

thaptinhtamdang
15-05-2008, 09:05 PM
Các bác giúp em với.Bác nào chỉ giúp em cách viết chương trình (bằng VB hay C# cũng được) để truyền dữ liệu qua cổng COM trên laptop với.
Nếu là PC, để truyền dữ liệu cho chính mình (kiểu tự mình chat với mình) thì chỉ cần truyền dữ liệu cho chính mình bằng cổng COM (nối chân 2,3) nhưng trên laptop thi làm thế nào??

namqn
16-05-2008, 05:32 AM
Các bác giúp em với.Bác nào chỉ giúp em cách viết chương trình (bằng VB hay C# cũng được) để truyền dữ liệu qua cổng COM trên laptop với.
Nếu là PC, để truyền dữ liệu cho chính mình (kiểu tự mình chat với mình) thì chỉ cần truyền dữ liệu cho chính mình bằng cổng COM (nối chân 2,3) nhưng trên laptop thi làm thế nào??
Nếu diễn đàn có mục bầu chọn "Câu hỏi ngây thơ nhất trên diễn đàn" thì tôi xin đề nghị câu hỏi này của bạn.

Cổng COM của PC hay laptop đều là cổng COM. Ở trên PC bạn nối chân 2 và 3 để tự trả dữ liệu được truyền về thì trên laptop bạn cũng làm như vậy (kiểu này được gọi là loopback connection, hay được các phần mềm thử nghiệm phần cứng thời xa xưa sử dụng khi kiểm tra các cổng COM).

Thân,

dungoc1
02-06-2008, 11:51 PM
a Bac oi. em dang lam de tai ve ADC. Chuong trinh la: viet chuong trinh thu du lieu qua cong may in. viet bang visual basic. so do gom co ADC0809, vi mach 74LS257, senso nhiet LM335 va sung clock vi mach 555. anh giup em voi

tiendungkct
13-08-2008, 10:26 AM
em lập trình giao tiếp pic với pc mắc lổi như sau:
-truyền kí tự từ máy tính xuống nếu trên 3 ki tự thi pic chỉ nhận được 3 kí tự va đơ luôn
- nếu dưới 3 ký tự thì nhận đúng ( em hiện thị lên lcd )
mong các bác chỉ giúp em a .

bengan
26-09-2008, 01:25 AM
thanks các bạn nhiều, có bạn nào có tài liệu lập trình pic bằng vb.net ko?

namqn
26-09-2008, 02:48 AM
thanks các bạn nhiều, có bạn nào có tài liệu lập trình pic bằng vb.net ko?
Tôi tin rằng hiện thời chưa có trình biên dịch VB.net nào cho PIC, do đó có lẽ không tồn tại tài liệu mà bạn hỏi.

Thân,

TADUCHAI
02-10-2008, 12:48 AM
sao bác Bắc ko làm một bài hưỡng dẫn như đã làm với C++ để anh em (nhưng ngừoi mới bắt đầu như tôi) có thể dễ tiếp thu và học hỏi nhỉ. Mong bác có thể sớm làm để tụi tôi có thể học hỏi. Thank U bác nhiều

nhatcuong84
02-10-2008, 02:38 AM
pic-------------------pc

truemen
10-10-2008, 04:37 PM
em dang lam giao tiep nhan du lieu tu cong COM tu thiet bi xu ly du lieu va hien thi du lieu bang phan mem viet bang VB.NET nhung ko biet cach khai bao cong COM trong VB.NET nhu the nao, cau truc day du de cong COM hoat dong roi gui va nhan du lieu nhu the nao can nhung ham nao can thiet, van de la em o biet xai ham nao va tac dung ra sao, moi vao nghe ah mongbac di truoc chi giao dum vai chieu. em cam on !

nuacuatoi2010
31-10-2008, 12:29 PM
anh em co the giup minh dc không?
minh đang viết giao diện VB6 để hiển thi dòng và áp trên 2 ô là ô Dòng và ô áp.mình đã truyền từ pic lên rùi.hai tín hiêu này cách nhau bằng 1 khoảng trắng.bây giờ làm sao có thể tách ra để lấy hai tín hiệu cho vào 2 ô là dòng và ô áp.
minh cám ơn .

nguyenquoctoan
06-11-2008, 03:40 PM
truyền nhận dữ liệu mà có ô vuông trong đó là bị ji các bác ơi,có phải sai font kô,em đa chỉnh cùng font hết mà vẫn gặp trường hợp đó...? xin chí giáo

vngps
06-11-2008, 04:46 PM
Chào các Bác: Em đang dùng Modem GSM chip WaveCom. 2 modem kết nối 2 máy tính ( sim đã đăng ký GPRS) Làm sao để truyền dữ liệu bằng GPRS vậy các Bác. hay có phần mềm nào sử dụng Không?


Em dùng điện thoại gửi MMS thì không biết làm sao xuất ra màng hình

Nhờ các bác hỗ trợ.
Cảm Ơn

phủ phước
18-12-2008, 01:02 PM
Tôi có đoạn code viết trên ccs nhưng khi chạy trên vb thì chỉ có kênh 0 là được .Xin giúp tôi tìm chổ sai:

phủ phước
18-12-2008, 01:21 PM
Tôi có đoạn code này nhưng nó chỉ truyền lên vb kênh 0 mà thôi ,xin góp ý giúp với .thank
#include <C:\Program Files\PICC\Devices\16F877A.h>
#device *=16 ADC=8
#fuses HS,NOWDT,NOLVP,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
byte adc;
byte buffer;
#INT_TIMER0
void send_data()
{
byte begin = 0xAA;


adc = read_adc();
putc(begin);
putc(adc);

}
void main()
{
int channel;

setup_adc_ports( ALL_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL );
for (channel=0;channel<=7;channel++)
{
set_adc_channel( channel );

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);//sets the internal clock as source
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0); // ngat timer0 de update screen
send_data();


while(1)
{
buffer=getc();


}
}
}

HUT&I
19-12-2008, 10:33 PM
Chào anh Bac!
Thật mừng là PIC việt nam có một thành viên như anh.Càng mừng hơn khi anh lại là sinh viên DHBKHN.Em thấy anh tham gia rất nhiều diễn đàn trên mạng phục anh quá.Anh có phương pháp học nào học hiệu quả chỉ giúp cho em với. Nhất là học lập trình thực sự em rất ngại động vào nó ,mặc dù ngành chúng em rất cần đến nó. Thú thực với anh em học về nó rất nhiều nhưng kết quả thì trái ngược với những j mà em dành cho nó. Rất mong nhận được sự chỉ bảo của anh.Chúc anh học tốt ,Cảm ơn anh

tungtot_vl
21-12-2008, 08:39 AM
chào các bác. em muốn làm một mạch giao tiếp cổng của pc với 2 pic (ví dụ A và B). em muốn khi pc gửi data cho pic A thì chỉ có pic A nhận, B không nhận. khi pc gửi data cho pic B thì B nhận, A không nhận. các bác có cách nào thì xin chỉ mình giúp.

hoangvanhuy
22-12-2008, 01:38 PM
Minh đang hoc visual basic , nen vao day. đã đăng kí rồi nhưng sao ko tải được tài liệu...Bạn nào biết chỉ mình, cảm ơn nhiều.

bacaynet
05-01-2009, 11:30 AM
Anh Hải Bắc ơi! Tại sao em không lôi cái MSComm ra project của em được vậy anh! Em cần gấp để làm đồ án! Mong anh giúp đỡ, cảm ơn nhiều!

bacaynet
05-01-2009, 12:53 PM
Mấy anh chị cho em hỏi thêm là:
- Code cho VDK 89 để nó và PC gửi nhận dữ liệu liên tục.
- Còn trong VB, em làm code này, không biết có đúng không:

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
dRec = MSComm1.Input
MSComm1.Output = dSend
End If
End Sub

vandungevn
28-02-2009, 11:35 PM
Lâu rùi không vào mà thấy mọi người trao đổi nhiều quá. hiiic.
Bạn nên mã hóa để cho nó gửi không bị sai tín hiệu.
VD: gửi mã hóa => gửi dữ liệu => gửi checksum.

Như vậy nếu c.hỉ gửi không thì bạn sẽ dễ hơn đó.
Còn về ADC các bạn nên dùng ADC 10 bít thì tốt hơn, nó có độ phân giải cao hơn và độ chính sác cao hơn là dùng 8 bít (đương nhiên là 1024 sẽ lớn hơn 256).

ex code: // gửi số có giá trị là 16 byte là "datasend"

void send_to_pc(unsigned int datasend, char set){
unsigned char chksum;
putc(0xAD); // gui ma hoa
putc(0xDA); // gui ma hoa
putc(set); // chon che do gui
putc((datasend>>8)&0xff); // Gui byte cao
putc(datasend & 0xff); // Gui byte thap
chksum = ((datasend>>8)|datasend))%256; // kiem tra loi
putc(chksum); // gui byte kiem tra loi
}

gửi phủ phước
code của bạn sai trong vòng for bạn chưa kết thúc chương trình, nếu bạn để như vậy thì vòng For chỉ chạy lần đầu tiên, không gửi được các kênh adc còn lại là đúng. Nên để chương trình đọc adc là chương trình con và gửi luôn là ok. như trên bạn gửi "set" là các kênh adc khác nhau là ok. như vậy vừa có thể đọc adc theo kênh vừa gửi là ok không sợ bị lỗi và bị nhầm.......

Chúc thành công nhé.

tranvangvn
04-03-2009, 10:25 PM
Các bác ơi giúp em với em giao diện vi điều khiển với máy tính bằng vb.còn vi điều khiển em viết bằng ngôn ngữ c
Vb em viết đơn giản sau:
Private Sub Command1_Click()
End
End Sub

Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,n,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim strf As String
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 50
strf = MSComm1.Input
L.Caption = strf

End Sub
Vi điều khiển em viết như sau:em dùng 89C52
#include<REG52.H>
#include<stdio.h>
void xung()
{
SCON= 0x50;
TMOD= 0x20;
TH1 = 0xF3;
TR1 = 1;
TI = 1;
}
main()
{
int i;
P1=0x00;
xung();
for(;;)
{
P1=0x01;
printf("CHUNG TOI LA NNUNG CHIEN SI");
} }
Nhưng không hiểu trên máy tính toàn nhận kí tự gì ấy không được như ý nắm và báo nỗi "28", thỉnh thoảng được thì hiển thị kí tự quá nhiều và phụ thuộc vào cái này:Loop Until MSComm1.InBufferCount >= 50
Các bác nào bớt chút thời gian giải thich và khác phục cho em với
Tiện thể cho em mấy chương trình xuất nhập đơn giản trên VB và cả VDK một chương trình mà khi ta bấm 1 phím mà trên VDK các post xuất cho tín hiệu để điều khiển và ngược lại VDK gửi tín hiệu máy tính mà hiển thị trên màn hình
Các bác có gắng các lệnh đều phải có chú giải nhé !
Cám ơn những nhà thông thái!

tranvangvn
04-03-2009, 10:27 PM
Gủi theo địa chỉ tranvang8@yahoo.com

tranvangvn
04-03-2009, 10:32 PM
Các bác cho em cả các mã lệnh trong C với VDK truyền thông nối tiếp nhé!

tranvangvn
04-03-2009, 10:39 PM
Các bác ơi giúp em với em giao diện vi điều khiển với máy tính bằng vb.còn vi điều khiển em viết bằng ngôn ngữ c
Vb em viết đơn giản sau:
Private Sub Command1_Click()
End
End Sub

Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,n,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim strf As String
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 50
strf = MSComm1.Input
L.Caption = strf

End Sub
Vi điều khiển em viết như sau:em dùng 89C52
#include<REG52.H>
#include<stdio.h>
void xung()
{
SCON= 0x50;
TMOD= 0x20;
TH1 = 0xF3;
TR1 = 1;
TI = 1;
}
main()
{
int i;
P1=0x00;
xung();
for(;
{
P1=0x01;
printf("CHUNG TOI LA NNUNG CHIEN SI");
} }
Nhưng không hiểu trên máy tính toàn nhận kí tự gì ấy không được như ý nắm và báo nỗi "28", thỉnh thoảng được thì hiển thị kí tự quá nhiều và phụ thuộc vào cái này:Loop Until MSComm1.InBufferCount >= 50
Các bác nào bớt chút thời gian giải thich và khác phục cho em với
Tiện thể cho em mấy chương trình xuất nhập đơn giản trên VB và cả VDK một chương trình mà khi ta bấm 1 phím mà trên VDK các post xuất cho tín hiệu để điều khiển và ngược lại VDK gửi tín hiệu máy tính mà hiển thị trên màn hình
Các bác có gắng các lệnh đều phải có chú giải nhé !
Cám ơn những nhà thông thái!
Các bác cho em các hàm trong C hay trong KEIL về giao tiếp máy tính nhé

tranvangvn
04-03-2009, 10:41 PM
Các bác ơi giúp em với em giao diện vi điều khiển với máy tính bằng vb.còn vi điều khiển em viết bằng ngôn ngữ c
Vb em viết đơn giản sau:
Private Sub Command1_Click()
End
End Sub

Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,n,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim strf As String
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 50
strf = MSComm1.Input
L.Caption = strf

End Sub
Vi điều khiển em viết như sau:em dùng 89C52
#include<REG52.H>
#include<stdio.h>
void xung()
{
SCON= 0x50;
TMOD= 0x20;
TH1 = 0xF3;
TR1 = 1;
TI = 1;
}
main()
{
int i;
P1=0x00;
xung();
for(;
{
P1=0x01;
printf("CHUNG TOI LA NNUNG CHIEN SI");
} }
Nhưng không hiểu trên máy tính toàn nhận kí tự gì ấy không được như ý nắm và báo nỗi "28", thỉnh thoảng được thì hiển thị kí tự quá nhiều và phụ thuộc vào cái này:Loop Until MSComm1.InBufferCount >= 50
Các bác nào bớt chút thời gian giải thich và khác phục cho em với
Tiện thể cho em mấy chương trình xuất nhập đơn giản trên VB và cả VDK một chương trình mà khi ta bấm 1 phím mà trên VDK các post xuất cho tín hiệu để điều khiển và ngược lại VDK gửi tín hiệu máy tính mà hiển thị trên màn hình
Các bác có gắng các lệnh đều phải có chú giải nhé !
Cám ơn những nhà thông thái!
Các bác cho em các hàm trong C hay trong KEIL về giao tiếp máy tính nhé

t_duyphuong
14-03-2009, 08:52 AM
Anh Hải Bắc ơi! Cho em hỏi : Em đã dùng đoạn code mà anh post lên về giao tiếp RS232 bằng VC++ nhưng khi biên dịch thì chuơng trình báo lỗi là chưa định nghĩa "COM1" và "COM2". Anh có thể chỉ cho em cách sửa lỗi không ạ?
Em vẫn chưa hiểu là chuơng trình tự nhận ra cổng COM hay là mình phải cấu hình như thế nào cho nó?
Cho em hỏi luôn là trên máy tính nó có ghi cho mình biết cái nào là "COM1" và "COM2" cho mình biết ko?
Em xin cám ơn!!!!!!!!!!!!!!!!!

phandinh
25-03-2009, 12:52 AM
chào mọi người . mình mới nghiên cứu về pic.
chủ đề giao tiếp này mình thấy cực cực hay & thực tế.
mới tìm hiểu nên lùng bùng quá. có gì nhờ mọi người giúp ( dù câu hỏi ngây thơ nhưng đừng cười nha).
mình tự tin là mình làm được.
" impossible is nothing "

phandinh
25-03-2009, 11:04 AM
mình tải bài mẫu của bác nhb ( test truyền nhận visual basic 6). mình làm đúng trình tự nhưng ko được . ai dã làm qua chỉ mình với.
cảm ơn nhiều!

nguyennam8888
25-03-2009, 10:47 PM
mình tải bài mẫu của bác nhb ( test truyền nhận visual basic 6). mình làm đúng trình tự nhưng ko được . ai dã làm qua chỉ mình với.
cảm ơn nhiều!

có phải bác lười không chịu đánh lại lệnh , mà chì copy cách lệnh từ tài liệu của bác NHB vào phải không? bạn phai đánh vào cho nó wen chứ , khi copy vào thì luc chay nó thì VB sẽ báo lỗi nhiều lắm.

binhbk2008
25-03-2009, 11:00 PM
mọi người có thể dùng labview đi bây giờ nó có bản mới nhất là 8.6 mình đang dùng 8.5. Nó có các khối hỗ trợ việc giao tiếp USB và com luôn. hay lắm có gì thì mail cho mình binh_bk_2008@yahoo.com

phandinh
26-03-2009, 11:44 AM
uh. tại mình chưa thông thạo vb lắm nên copy y chang luôn.
rồi cho nó chạy. c.trình có chạy nhưng không báo lỗi bạn à.
mình thử send 1 kí tự mà ko thấy hiện tượng gì.
Các bước mình làm như sau:
1. thiết lâp các thông số cho cổng com 1 ( như hd trong TUT Visual C <--> PC )
2. nối chân 2 & 3
3. dùng luôn bản mẫu của bác NHB ( vb)
4. chạy ---> ko hiện tượng.
Bạn xem rồi góp ý giúp mình nha . mục đích trước tiên của mình là test xem có truyền , nhận dc ko.
thanks bạn nhiều

nguyennam8888
26-03-2009, 12:50 PM
uh. tại mình chưa thông thạo vb lắm nên copy y chang luôn.
rồi cho nó chạy. c.trình có chạy nhưng không báo lỗi bạn à.
mình thử send 1 kí tự mà ko thấy hiện tượng gì.
Các bước mình làm như sau:
1. thiết lâp các thông số cho cổng com 1 ( như hd trong TUT Visual C <--> PC )
2. nối chân 2 & 3
3. dùng luôn bản mẫu của bác NHB ( vb)
4. chạy ---> ko hiện tượng.
Bạn xem rồi góp ý giúp mình nha . mục đích trước tiên của mình là test xem có truyền , nhận dc ko.
thanks bạn nhiều

bây giờ mình gởi cho bạn 1 bài tập VB đơn giàn để test truyền- nhận, có cả file GTMT mà mình từng tìm hiểu, học cái này xong bạn hoc them cách sử dụng combox trong VB nữa là tự có thể viết giống NHB rồi.
Chúc bạn thành công.

phandinh
26-03-2009, 01:24 PM
cảm ơn bạn thật nhiều. mình sẽ xem kĩ tài liệu của bạn
Có gì nhờ mọi người nữa.
thân chào

toiyeutdh8x
05-04-2009, 09:59 AM
chào bạn Hải Bắc. Mình đang làm về đề tài cân điện tử.
Mình thấy trên diễn đàn ít ai làm về đề tài này.Mình dùng viđiều khiển AVR có tích hợp bộ ADC trong chip con atmega8535.
Mình gặp khó khăn ngay phần xử lý tín hiệu cho loadcell.Loadcell mình dùng loại BSA-1t.
Vì thời gian rất gấp nên muôn sự giúp đỡ của các bạn trên diễn đàn.
Bạn đã từng làm rồi thì hướng dẫn mình phần này với. Và có tài liệu về loadcell loại này thì gửi giúp mình.
Mình chân thành cảm ơn!
Địa chỉ mailcủa mình:
toiyeuvietnam8x@gmail.com

namqn
05-04-2009, 04:48 PM
chào bạn Hải Bắc. Mình đang làm về đề tài cân điện tử.
Mình thấy trên diễn đàn ít ai làm về đề tài này.Mình dùng viđiều khiển AVR có tích hợp bộ ADC trong chip con atmega8535.
Mình gặp khó khăn ngay phần xử lý tín hiệu cho loadcell.Loadcell mình dùng loại BSA-1t.
Vì thời gian rất gấp nên muôn sự giúp đỡ của các bạn trên diễn đàn.
Bạn đã từng làm rồi thì hướng dẫn mình phần này với. Và có tài liệu về loadcell loại này thì gửi giúp mình.
Mình chân thành cảm ơn!
Địa chỉ mailcủa mình:
toiyeuvietnam8x@gmail.com
Nếu bạn gặp khó khăn với việc code cho AVR, bạn nên hỏi ở www.dientuvietnam.net. Diễn đàn này chủ yếu dành cho PIC.

Thân,

tpasterisk
08-04-2009, 01:08 PM
bây giờ mình gởi cho bạn 1 bài tập VB đơn giàn để test truyền- nhận, có cả file GTMT mà mình từng tìm hiểu, học cái này xong bạn hoc them cách sử dụng combox trong VB nữa là tự có thể viết giống NHB rồi.
Chúc bạn thành công.

Bác ơi bác có thể chỉ em cách làm hình cái lá giống hình dưới bác đã làm dc ko???Cám ơn bác....

http://www.upanh.com/uploads/8-April-2009/ffp3k4ktf4c40n2zehxk.jpg

nguyennam8888
10-04-2009, 10:08 AM
Bác ơi bác có thể chỉ em cách làm hình cái lá giống hình dưới bác đã làm dc ko???Cám ơn bác....

http://www.upanh.com/uploads/8-April-2009/ffp3k4ktf4c40n2zehxk.jpg

bạn vào thuộc tính Picture của From mả bạn đang làm việc ấy, click vao nó rồi tìm thuộc tính Picture , click vào rồi chỉ đường đẫn đến hình cần lấy.

phandinh
10-04-2009, 09:51 PM
mọi người cho em hỏi :
.giá trị đọc được từ ADC là số nhị phân (10 bit chẳng hạn), vậy khi mình dùng lệnh putc(read_adc); thì c.trình sẽ tách thành 2 byte ( 1 byte chứa 8 bit và 1 byte chứa 2 bit ) để truyền phải không ?.
.cho em hỏi các lệnh để chuyển từ hệ nhị phân ==> thập phân trong CCS.

namqn
10-04-2009, 11:23 PM
mọi người cho em hỏi :
.giá trị đọc được từ ADC là số nhị phân (10 bit chẳng hạn), vậy khi mình dùng lệnh putc(read_adc); thì c.trình sẽ tách thành 2 byte ( 1 byte chứa 8 bit và 1 byte chứa 2 bit ) để truyền phải không ?.
.cho em hỏi các lệnh để chuyển từ hệ nhị phân ==> thập phân trong CCS.
putc() nhận đối số là một byte, do đó bạn không thể truyền giá trị 10-bit cho putc() với hy vọng nó sẽ tách thành 2 byte cho bạn.

Không có lệnh để chuyển số nhị phân sang thập phân, chỉ có các giải thuật để chuyển số nhị phân sang số thập phân biểu diễn bằng BCD hay ASCII.

CCS C cung cấp hàm itoa() để chuyển số nhị phân kiểu integer thành chuỗi ký tự ASCII tương ứng giá trị nhị phân đó (trong hệ thập phân).

Thân,

tpasterisk
11-04-2009, 04:22 PM
bạn vào thuộc tính Picture của From mả bạn đang làm việc ấy, click vao nó rồi tìm thuộc tính Picture , click vào rồi chỉ đường đẫn đến hình cần lấy.

Bác ơi , bác đã từng lập trình gửi nhận tin nhắn bằng tập lệnh AT (trên VB) chưa? nếu rùi bác có thể cho em xin mã nguồn để tham khảo đưộc ko?????Em đang bí ...huhuhuhu,...

chuabietyeu
15-04-2009, 01:14 AM
Cám ơn các bác đã tạo ra luồng này, nhưng Sao ko thấy bác nào làm về VB 2008 nhỉ???
Em đang làm đề tài mô phỏng mạng nơ ron trên nền FPGA có dùng giao tiếp với máy tính, may quá đọc đc luồng này em tích lũy đc rất nhiều! cám ơn các bác nhiều nhé! đặc biệt là anh NHB :D

digan
16-04-2009, 11:54 AM
em dùng đoạn CT này để KT nếu có ngắ nhận thì sẽ thay đổi trạng thái LED ở PORTB để nhận biết.nhưng không dc. các tiền bối chỉ giúp xem sai ở đâu.
code của em:
#include "D:\RS232\RS232.h"
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOWRT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)

char buf;

#int_RDA
void RDA_isr()
{
buf=getc();
putc(buf);
portb = 0x0f;
}

void main()
{
trisb=0x00;
portb = 0x00;
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

while(1)
{

}
}

mtuankct
16-04-2009, 12:47 PM
đọc chương trình của bạn có vẻ ổn
Phần cứng của bạn thế nào? bạn truyền nhận giữa PC va vdk hay là giữa 2 vdk?
Mình nghĩ có thể là lỗi phần cứng, bạn có thể kiểm tra bằng cách tháo con PIC ra, nối chân TX và RX trên board lại với nhau rồi truyền nhận bằng máy tính nếu truyền nhận OK nghĩa là phần cứng của bạn không sao

digan
16-04-2009, 02:39 PM
Mình truyền giứa PC và vi điều khiển
nối chân 2 và chân 3 của cổng com ct chạy tốt.
test các chức năng in/out của các port trên VDK cũng tốt kho sai
mạch max232 nối: Max232 pin12----------pin25 PIC
pin11----------pin26

tungtot_vl
16-04-2009, 03:58 PM
bạn thử đoạn này xem sao

#int_RDA
void RDA_isr()
{ int buf;
buf=getc();
putc(buf);
portb = 0x0f;
delay_ms(100);
}

void main()
{
set_tris_b(0);
set_tris_c(0x80);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

while(1)
{
portb = 0xf0;
delay_ms(100);

}
}

lequocbao
16-04-2009, 06:00 PM
#int_RDA
void RDA_isr()
{
buf=getc();
putc(buf);
portb = 0x0f;//----------> portb =0x0f khi có ngắt lần thứ mấy vẫn không đổi
}

void main()
{
trisb=0x00;
portb = 0x00;//---->trạng thái đầu của portB
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

while(1)
{

}
}

theo chương trình bạn viết thì portb chỉ thay đổi trạng thái chỉ 01 lần duy nhất thôi.sau đó dù có ngắt xảy ra bao nhiêu lần đi chăng nữa thì portb vẫn luôn không đổi và = 0x0f forever!vì vậy bạn cần quan sát kỹ trạng thái của portb khi mới cấp nguồn cho pic và khi bạn gưi dữ liệu qua rs232 lần đâu tiên là sẽ có sự khác nhau như bạn mong muốn và sau đó thì portb sẽ không đổi.

phandinh
28-04-2009, 02:30 PM
Em đang viết VB 6. khi em vào File --> save project as --> lưu 1 tên khác , khi mở lại thì
tất cả các file trước đều bị đè lên.
Em cũng thử tạo 1 folder mới rồi "save project as" vào folder vừa tạo, nhưng cũng bị như vậy
Ví dụ nhé : mở Project 1 --> chỉnh sửa --> lưu lại thành tên khác Project 2 . khi mở
Project 1 thì nội dung lại giống Project 2 .
Giúp em với

tungtot_vl
29-04-2009, 08:52 AM
Em đang viết VB 6. khi em vào File --> save project as --> lưu 1 tên khác , khi mở lại thì
tất cả các file trước đều bị đè lên.
Em cũng thử tạo 1 folder mới rồi "save project as" vào folder vừa tạo, nhưng cũng bị như vậy
Ví dụ nhé : mở Project 1 --> chỉnh sửa --> lưu lại thành tên khác Project 2 . khi mở
Project 1 thì nội dung lại giống Project 2 .
Giúp em với

thi vấn đề bạn nói là đúng chứ có sai đâu.
bạn muốn Project 1 # Project 2. thì mở Project 1 rồi "save project as" thành Project 2 sau đó chỉnh sửa rồi save lại thì lúc đó Project 1 # Project 2. bạn cũng nên save form as file1 thành file2 nhé

phandinh
06-05-2009, 12:07 AM
em đã làm dc giao tiếp ADC 8 bit, nhưng ADC 10 bit thì loay hoay chưa biết xử lí thế nào.
em làm thế này:
float val_adc;
.......
val_adc = read_adc();
printf("%u",val_adc);
Em tăng biến trở từ nhỏ nhất lên lớn nhất, thì trên VB giá trị chạy từ 00-->ff 4 lần.
Tức là thế này 00-->ff -->00 -->ff-->00-->ff -->00 -->ff.
Em không biết làm sao để truyền 10 bit lên PC ?
Mong các bác cho em lời khuyên

newboystylew
13-05-2009, 10:14 AM
bạn ơi minh down file vb của bạn về mà không chạy được

jindodinho45
21-05-2009, 12:16 AM
Anh ơi! em đang làm bài tập đếm sản phẩm giao tiếp PC. Em đưa xung vào ngõ vào timer1 để đếm! Như thế có ổn không anh! Em mới tìm hiểu pic mà! Anh có các đoạn mẫu nào không gửi cho em tham khảo với! Cảm ơn anh trước nhé!

anhct
21-05-2009, 11:41 AM
Anh ơi! em đang làm bài tập đếm sản phẩm giao tiếp PC. Em đưa xung vào ngõ vào timer1 để đếm! Như thế có ổn không anh! Em mới tìm hiểu pic mà! Anh có các đoạn mẫu nào không gửi cho em tham khảo với! Cảm ơn anh trước nhé!

Việc này thì liên quan gì tới giao tiếp hay truyền thông giữa PIC và PC không bạn nhi? Đếm sản phẩm thì dùng capture mà, bạn xem thêm ở các box khác nhé, đừng để luồng này bj loãng, tks :)

ketxanh
21-05-2009, 12:24 PM
ai có tài liệu giao tiếp máy tính bằng vb cho mình xin với. mình mới làm quen với món này

levannam
23-05-2009, 12:27 AM
Chào các lão tiền bối!ai biết cho mình hỏi? Hiện mình đang có 1 mạch đảo chiều quay và điều khiển tốc độ động cơ DC bằng nút nhấn,viết bằng ngôn ngữ C,sử dụng PIC16f877a chạy rất tốt.Bây giờ mình muốn không điều khiển bằng nút nhấn nữa mà muốn đảo chiều quay và điều khiển tốc độ động cơ trên PC,dùng ngôn ngữ Visua Basic,giao tiếp qua cổng COM.(Vì mình đang làm đồ án và yêu cầu của thầy giáo là như thế).Phần bo mạch mình đã gắn 1 IC MAX232 và đầu chờ cổng COM sẵn để kết nối với PC.Vậy nhờ các lão tiền bối nói rõ cơ chế bắt tay giữa PC với vxl hay có Code mẫu nào giống hoặc tương tự up lên cho tôi tham khảo với.Xin đa tạ.Có thể gửi qua mail được thì càng tốt"levannam20674@yahoo.com".

vinhquang2808
06-06-2009, 09:39 AM
Xin lỗi, cho mình hỏi 1 chút: mình muốn đọc dữ liệu cùng 1 lúc nhiều COM( 1 form có nhiều mscôm) có ảnh hưởng gì nhau không?

tuanviet13
17-06-2009, 04:48 PM
Mình cần 1 đoạn code tính CRC16, các bạn có thể share cho mình với được không, mình thử nhiều đoạn code khác rồi nhưng ko thể ra đúng được. Mình viết trên VB6.0 mà. Thanks các bạn trước nhé

hoangnguyen_qn
18-06-2009, 09:53 AM
Cho mình hỏi chút nha.
Mình đang làm bài tập lớn: dùng máy tính điều khiển và giám sát thiết bị điện trong gia đình.
Mình chỉ mới điều khiển được thôi,vấn đề giám sát thì chưa được.
Trường hợp có điện truyền đến thiết bị dc rồi nhưng thiết bị ko chạy(có vấn đề hư hỏng thiết bị ji đó) vậy làm sao biết dc ha?
có cái mạch này các bạn xem giúp ha? hình như có vấn đề.thanks

minhtrung2002dn
20-06-2009, 09:43 PM
kính gửi anh ngohaibac
em đang viết chương trình giao tiếp cổng com giửa máy tính và đầu cân DIOMAT S bằng vb. nhưng do ko biết khung truyền như thế nào. Có 1 phần mềm củ của nhà cung cấp nhưng do ko thích nghi với thời điểm hiện tại, phần mềm này chủ yếu nhận dử liệu cân về máy tính. Em đã dùng phương pháp nối hai máy tính với nhau qua cổng com rs232 và dùng phần mềm terminal để text xem phầm mềm củ của nhà cung cấp gửi dử liệu xuống đầu cân như thế nào lúc này em nhận được dử liệu HEX trên terminal như thế này:02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 và vòng lặp cứ tiếp tục như vậy.Em ko hiểu họ dùng ký tự nào để gửi qua đầu cân . Mong anh giúp em cảm ơn

newbiehoc
03-07-2009, 04:01 PM
mọi người cho em hỏi là, khi em cắm đầu cân điện tử vào máy tính qua cổng COM vậy bây giờ em muốn lấy số liệu mà đầu cân truyền vào máy tính thì em phải lập trình như thế nào. Em xin cảm ơn và mong có bài phúc đáp.

hoangxudi
23-10-2009, 08:23 AM
Các bác Ơi! Giúp Em với. Em là thành viên mới.
Em đang làm mạch giao tiếp máy tính dùng RS232 điều khiển đèn bàn và quạt máy.mà không biết bắt đàu từ đâu cả. có bác nào có tài liệu gì giới thiệu em với. Nếu có cơ hội, Em xin cảm ơn và hậu tạ ! hậu tạ! hậu tạ!...
Mail của em là:
hoangxudi@gmail.com

nghia_tdh21
25-10-2009, 10:39 AM
Để dùng PIC giao tiếp với cổng COM các bạn phải tìm hiểu về PIC và cơ chế hoạt động module USART của pic.
Sau đó các bạn tìm hiểu về cách lập trình cho module này, để lập trình cho PIC có thể dùng trình dịch CCS hoặc mikroC
Tiếp theo bạn nên sử dụng visualbasic để lập trình giao tiếp với pic qua cổng COM (chủ đề này Ngô Hải Bắc đã viết rất nhiều trên diễn đàn)

trantrung03t3
22-01-2010, 09:32 AM
Hi chao anh! em dang tim hieu ve phần mềm cân điẹn tử. tức là lấy dữ liệu từ bàn cân qua cổng com, vậy anh có thể cho em tài liệu về hoắc chương trình bằng VB được không ah. Thanks! co gì có thể nhắn cho em : trantrung@thepdana-y.com . tell: 0935324848

tuongdtd
23-01-2010, 10:02 PM
Hi chao anh! em dang tim hieu ve phần mềm cân điẹn tử. tức là lấy dữ liệu từ bàn cân qua cổng com, vậy anh có thể cho em tài liệu về hoắc chương trình bằng VB được không ah. Thanks! co gì có thể nhắn cho em : trantrung@thepdana-y.com . tell: 0935324848
bạn lên tự tim hiểu rồi viết sau đó có gì thắc mắc thì gửi bài lên diễn đàn hỏi chứ làm gì có ai có thời gian viết bài cho bạn được, bạn nên tự thân vận động trước đã.

trungduc
24-01-2010, 05:56 PM
Xin chào các bạn tôi có một vấn đề nhỏ nhờ các bạn tư vấn giúp. Tôi sử dụng Laptop không có cổng COM nên mua cái USB SERIAL CONVERTER như vậy khi giao tiếp với PIC tôi có cần IC MAX232 hay không?
Xin Cảm ơn!

qdaihiep
26-01-2010, 01:17 AM
Các anh làm ơn giúp em với ạ
Em đang phải lập trình để truyền và nhận dữ liệu qua cổng RS232
Phần cứng của em gồm 1 barrier, 1 máy in Barcode và 1 đầu đọc barcode. Cả 3 cái này đều được kết nối với bộ điều khiển Icon100. Bộ đk icon100 này lại được kết nối với cổng RS232
Em ko biết phải lập trình VB6 như thế nào
Xin các anh chỉ giáo
Cảm ơn các anh nhiều!!!

nghia_tdh21
27-01-2010, 02:42 PM
Em đang phải lập trình để truyền và nhận dữ liệu qua cổng RS232
Phần cứng của em gồm 1 barrier, 1 máy in Barcode và 1 đầu đọc barcode. Cả 3 cái này đều được kết nối với bộ điều khiển Icon100. Bộ đk icon100 này lại được kết nối với cổng RS232
Em ko biết phải lập trình VB6 như thế nào

Vấn đề là bạn có biết cấu trúc các gói tin mà thiết bị gửi lên máy tính như thế nào hay không? Khi đó mới dùng vb để đọc các gói tin đó mà xử lý.
Còn code mẫu vb6 giao tiếp qua cổng COM thì nó nằm ngay đầu của topic này, bạn chịu khó tìm nhé.

nhac.nhuc
27-02-2010, 11:46 AM
Các bạn ơi, bạn nào biết về vấn đề giao tiếp giữa PC và Pic16f877a dùng VB, cách viết VB như thế nào để PC có thể nhận được data từ Pic truyền Về qua cổng COM. Mình đã từng học qua VB. Các bạn có thể hướng dẫn thật là chi tiết để mình cũng như các bạn mới tìm hiểu về vấn đề này có thể hiểu kỹ càng, và làm thực tế được! Rất mong sự giúp đỡ của các bạn, cám ơn các bạn nhiều!

tuongdtd
28-02-2010, 01:58 PM
Các bạn ơi, bạn nào biết về vấn đề giao tiếp giữa PC và Pic16f877a dùng VB, cách viết VB như thế nào để PC có thể nhận được data từ Pic truyền Về qua cổng COM. Mình đã từng học qua VB. Các bạn có thể hướng dẫn thật là chi tiết để mình cũng như các bạn mới tìm hiểu về vấn đề này có thể hiểu kỹ càng, và làm thực tế được! Rất mong sự giúp đỡ của các bạn, cám ơn các bạn nhiều!
hướng dẫn chi tiết thì mình không có thời gian viết lên sau đây là một vài gợi ý cho bạn:
- Ban đầu bạn kéo biểu tượng giao tiếp qua cổng com có tên là "MIcrosoft comm control 6.0" có hình giống chiêc điện thoại.
- Để giao tiếp dữ liệu qua cổng Com thì bạn sử dụng các thư viện hỗ trợ port.dll hay io.dll
- Nhận dữ liều từ cổng com thì trước tiên trong VB ban đầu bạn phải khởi tạo cho cổng com: chọn cổng, thông số cho cổng, mở cổng, khai báo sử dụng sự kiện oncom (chú ý thông số cho cổng phải giống như các thông số cài đặt của VĐK)
- Bạn sẽ nhận dữ liệu gửi từ VĐK lên PC trong sự kiện oncom, bạn có thể nhận từng byte hay nhận nhiều byte cùng lúc bằng lênh "MScomm.input".
Bạn gải quyết từng vấn đề, tôi chắc là chỉ trong thời gian ngắn bạn có thể sử lý được việc truyền nhận với cổng com.

lamduyet_spk
16-04-2010, 12:02 AM
hi!! em chao cac anh!!
em dang lam cai te tai noi dung la nhu the nay,anh nao co tai lieu cho em xin ve tham khao voi!! em lam ve con pic giao tiep voi pc va 1 bo thu phat RF ket noi voi con pic6f877a
!! bo thu phat nay em dung dieu khien cac bong den!! co nghi la nhu the nay!! khi ben thu phat ra tin hieu thi ben nhan lam cho den sang bao hieu da nhan duoc tin hieu (den sang) dong thoi tren giao dien cua may tinh cung bao hieu rang da nhan duoc tin hieu!! Anh nao co tai lieu lien quan toi no chi giup em voi!! Cam on may anh truoc nha!!

123yeah
16-05-2010, 10:11 PM
Mình đã có giao diện bằng VB6, muốn truyền dữ liệu cho PIC16F877A
Mình có 1 số thắc mắc rất mong các bạn giải đáp dùm :
1. Mình truyền 3 biến Interger xuống PIC thì nên làm theo kiểu truyền khung hay chuỗi ?
2. Trên PIC cần có code để xử lí 3 biến Interger kia đúng ko ? Mình viết code nạp cho PIC bằng mikroC

mrliang87
01-07-2010, 12:54 PM
Chào anh Bắc!Em đang làm đồ án TN về bảng báo giá ngoại tệ.Giao diện VB em đã làm OK nhận đc dữ liệu từ Internet về rồi.Nhưng phần giao tiếp với VXL thì chưa làm đc.Dữ liệu truyền đc qua RS232 nhưng không hiểu sao không hiển thị ra Led 7 đoạn đc.Anh có mẹo gì ko chỉ em với^^.Nếu đc anh cho em xin nick yahoo của anh để em có thể hỏi kĩ hơn nha.Thanks!

blackangel
20-07-2010, 12:43 PM
anh bac ah,em dang lam quang bao giao tiep voi may tinh. anh cho em hoi la neu tren vb minh danh chu a, va tao ma led de truyen xuong pic thi duoi pic co can ma led chu a nua khong, no co so sanh voi data truyen tu pc xuong khong.em chi truyen mot chieu tu pc xuong pic thoi.
mong hoi am cua anh.
cam on anh nhieu

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.

#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:


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
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
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
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.

diode1
23-07-2011, 11:53 PM
Em đang làm về Đếm và phân loại SP trắng và đen Giao tiếp PIC 16F877A voi PC sử dụng VB. Em đã truyền được dữ liệu lên PC nhưng hiển thị không đúng ,xin mấy huynh chỉ em hướng giải quyết. Đây là file gồm Chương trình , mô phỏng bàng proteus và VB. http://www.mediafire.com/?195d8sza5tcjubg
Huynh nào rảnh xem và chỉ em hướng giải quyết Mail của em : vuhoan_vu@yahoo.com

langtudat87
12-11-2011, 12:21 PM
Chào các bạn.

Mình mở luồng này để hướng dẫn các bạn lập trình giao tiếp RS232 bằng phần mềm Visual Basic 6.0 của Microsoft.

Do site tailieuvietnam.net đang có vấn đề về nhỏ nên mình không upload file lên đó được. Tuy nhiên mình vẫn upload chương trình viết bằng VB để các bạn tham khảo.

Giao diện của chương trình như sau:

http://i36.photobucket.com/albums/e46/ngohaibac/Serial%20Port/PVN_0112.gif

Hình 1: Giao diện chương trình đơn giản thứ 1 dùng VB.

Chương trình này là một ví dụ nhỏ bạn truyền một loạt byte rùi nhận về (mình nối 2 chân 2 và 3 để test chương trình). Các bạn có thể ứng dụng nó trong mạng truyền thông dùng các giao thức truyền khác nhau. Trong ví dụ của mình truyền đi 11 byte gồm 1 byte start, 8 byte dữ liệu, 1 byte CRC, 1 byte stop.

Chúc các bạn thành công.
cai nay truyen duoc 2byte nhung minh muon truyen 8byte thi nhu the nao mong cac ban giup do
Option Explicit
Dim Send_Data As String
Dim ket_noi As Integer
Dim Hbyte As Integer
Dim Lbyte As Integer
Dim arr() As Byte


Private Sub cmdclear_Click()
Text1.Text = ""
Text2.Text = ""
End Sub

Private Sub cmdClose_Click()
Unload Me
End Sub

Private Sub Form_Load()
'If MSComm1.PortOpen Then MSComm1.PortOpen = False
'With MSComm1
'.CommPort = 1
'.Settings = "9600,n,8,1"
'.RThreshold = 3 'so byte truyen
'.PortOpen = True
'End With
If MSComm1.PortOpen Then MSComm1.PortOpen = False
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.RThreshold = 3
MSComm1.InputMode = comInputModeBinary
MSComm1.InBufferCount = 0
MSComm1.PortOpen = True
Text1.Text = ""
Text2.Text = ""
End Sub

Private Sub cmdSend_Click()
Send_Data = Trim(Text1.Text)
Hbyte = Send_Data \ 256
Lbyte = Send_Data Mod 256
MSComm1.Output = Chr(Hbyte) & Chr(Lbyte) & Chr$(13)
'MSComm1.Output = Send_Data & Chr$(13)
End Sub

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
Dim rcv
If MSComm1.CommEvent = comEvReceive Then
arr() = MSComm1.Input
'If (arr(2) = 255) Then
Text2.Text = arr(0) * 256 + arr(1)
'End If
End If
End If
End Sub

mrsin
06-04-2012, 12:31 PM
anh ngohaibac có thể giup em cái nay được không, em có 1 giao diện VB cập nhật giá vàng từ internet xuống, em đã tải dữ liệu xuống được rồi nhưng sao không send data qua vi xử lý được và đây là VB mong anh sửa giúp em

vvv123
13-04-2012, 12:44 PM
anh bắc ơi hướng dẫn em cách gửi 1 chuỗi ký tự ví dụ " hoc vdk" từ giao diện của visual basic 6.0 lên pic 16f887 và hiển thị ký tự đó ra lcd
yêu cầu của em là trên giao diện gửi ký tự gì thì vđk sẽ hiển thị tự đó
em đang cần các anh chỉ em với co tài liệu cho em xin lun
mong mọi người giúp đỡ

nhoc_pun_pun
26-05-2012, 02:24 PM
minh cun cho g dang can giao tiep nhung co 1 vai

tqhoan15288
28-05-2012, 11:20 AM
anh bắc ơi hướng dẫn em cách gửi 1 chuỗi ký tự ví dụ " hoc vdk" từ giao diện của visual basic 6.0 lên pic 16f887 và hiển thị ký tự đó ra lcd
yêu cầu của em là trên giao diện gửi ký tự gì thì vđk sẽ hiển thị tự đó
em đang cần các anh chỉ em với co tài liệu cho em xin lun
mong mọi người giúp đỡ
Bạn sử dụng ngắt RDA ( ngắt khi nhận đc 1 kí tự từ PC truyền xuống), dùng hàm getc( nhận 1 kí tự), tạo 1 mảng rồi cho vào mảng đấy là xong.
Trong VB thì bạn cũng phải tinh chỉnh mấy cái configuration của MSComm để giao tiếp đc với PIC qua cổng COM.
Thân.

hoangson_200529
01-06-2012, 01:08 AM
hiện tại em làm đồ án vẽ đặc tuyến diode trên máy tính, sử dụng pic16877a, nhưng không bít làm cách nhận dữ liệu đo được (ở đây em đo con diode) từ cổng com để có thể vẽ đặc tuyến trên giao diện vb 6.0, e sử dụng teechar de ve,sau đó có 1 nút "lệnh đo" để yêu cầu phần cứng ben ngoài đo con diode rồi tiếp tục gửi dữ liệu vào máy tính de vẽ đặc tuyến trên giao diện vb 6.0. anh giúp em vs anh Bắc ơi

thajcobac
03-12-2012, 05:36 PM
có ai giup đỡ mình mạch đèn giao thông này được ko?
khi minh nhấn nút trong VB sao nó không chạy vậy ?

truong1993
30-10-2013, 10:59 PM
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.
bi của a rất hữu ích.mong a giúp đỡ.e cũng dang làm cái đề tài điều khiển thiết bị qua tin nhắn dùng sim 900.cần a giúp phần giao tiếp này với ạ.mail của e. xuantruongdt2@gmail.com

demon999
31-10-2013, 01:39 PM
cảm ơn bạn chia sẻ nha!