Gallery

ექსპერიმენტები მიმდევრობით პორტზე

მიკროკონტროლერზე დაფუძნებული ტექნიკის (მათ შორის რობოტების) სამართავად მოსახერხებელია პერსონალური კომპიუტერის მიმდევრობითი RS232 პორტის გამოყენება. ეს დაკავშირებულია იმასთან, რომ Atmel მიკროკონტროლერების უმრავლესობა შეიცავს მზა მიმდევრობით საკომუნიკაციო მოწყობილობას (ზოგიერთი მოდელი – რამოდენიმესაც), რომელიც იმავე პროტოკოლით მუშაობს, რაც RS232 პორტი. ამ მოწყობილობას UART (Universal Asynchronous Receiver/Transmitter – უნივერსალური ასინქრონული მომღებ/გადამცემი)  ეწოდება. აქედან გამომდინარე აქტუალობას იძენს მიმდრევრობითი პორტის Proteus-ში მოდელირების საკითხი.
შექმენით Proteus-ში ახალი პროექტი (შეგიძლიათ ჩამოტვირთოთ საიტის “Files”  განყოფილებიდან არქივი ” serial_demo_Proteus.zip”), რომლის  სქემა მოცემულია ნახაზზე.
serialdemo_proteus1

მიმდევრობითი Com-პორტის მოდელის სქემაზე განსათავსებლად  Proteus – ში აირჩიეთ “Library” , “Pick Device/Symbol” და ფანჯარაში “Keywords:” აკრიფეთ “compim”. განათავსეთ კომპონენტი სქემაზე და თაგუნას მარჯვენა კლავიშზე დაჭერით გახსენით მისი თვისებების პანელი  (“Edit Properties”). ფანჯარაში “Physical port:” აირჩიეთ თქვენი კომპიუტერის თავისუფალი Com-პორტის ნომერი. (პორტის ნომრის დასადგენად შეასრულეთ შემდეგი თანმიმდევრობა (Windows XP): Control Panel, System, Hardware, Device Manager, Ports (COM & LPT)  – ფანჯარაში გამოჩნდება პორტების ჩამონათვალი).

მეორე კომპონენტი, რომელიც გვჭირდება სიმულაციისთვის, არის ვირტუალური ტერმინალი Virtual Terminal.

განათავსეთ ვირტუალური ტერმინალი სქემაზე,  გააკეთეთ საჭირო შეერთებები, გაუშვით სიმულაცია და ვირტუალურ ტერმინალზე თაგუნას მარჯვენა კლავიშის დაჭერით გაააქტიურეთ “Echo Typed Characters”.  ახლა თქვენ შეგიძლიათ კლავიატურიდან ჩაბეჭდოთ ტექსტი ტერმინალში (ბეჭდვა უამისოდაც შეიძლება, მაგრამ ნაბეჭდი არ გამოჩნდება). ბეჭდვის პროცესში compim ელემენტის TXD გამომყვანი წითლად აციმციმდება. ეს ნიშნავს, რომ თქვენს მიერ ამორჩეულ Com პორტში ინფორმაცია გადაიცემა. თუ მეორე კომპიუტერში ანალოგიურ ოპერაციებს ჩავატარებთ და კომპიუტერებს შევაერთებთ ერთმანეთთან ქვემოთ მოყვენილი სქემით, მაშინ ერთი კომპიუტერის ვირტუალურ ტერმინალში ჩაბეჭდილი ტექსტი მეორეში გამოჩნდება და პირიქით.

ერთდროულად ორ კომპიუტერზე მუშაობა, რა თქმა უნდა, არასერიოზულია. საბედნიეროდ, არსებობს უტილიტა vspd (Virtual Serial Port Driver), რომელიც თქვენს კომპიუტერში ქმნის ვირტუალურ მიმდევრობით პორტს, რომელიც სათანადოდ არის მიერთებული კომპიუტერში არსებულ ფიზიკურ პორტთან, რაც საშუალებას იძლევა გაიცვალოს ინფორმაცია ამ ორ პორტს შორის.
ჩვენი საიტის “Files” განყოფილებიდან ჩამოტვირთეთ ფაილი vspd.exe და დააინსტელირეთ თქვენს კომპიუტერზე. უტილიტის გაშვების შემდეგ, ფანჯარაში გამოჩნდება თქვენს კომპიუტერში არსებული ყველა ფიზიკური პორტი. ამოირჩიეთ ის, რომელიც Proteus-ის მოდელში გაქვთ მითითებული და შეუწყვილეთ მას ვირტუალური პორტი სხვა, არ არსებული ნომრით.  მაგ., თუ Proteus-ში მითითებული გაქვთ Com1, მაშინ შეუწყვილეთ მას Com3, თუ რა თქმა უნდა, იგი ფიზიკურად არ არსებობს.
ახლა თუ რაიმე Telnet -კლიენტ პროგრამის (მოიძიეთ ინტერნეტში)  საშუალებით ტექსტს გადავცემთ ვირტუალურ Com3 პორტში, მაშინ იგი გამოჩნდება Proteus-ის ვირტუალურ ტერმინალში. Windows XP ოპერაციულ სისტემაში Telnet-კლიენტის როლი შეიძლება შეასრულოს ჰიპერტერმინალმა (Start,  All Programs, Accessories, Communications, HyperTerminal).
Telneti-ით რობოტის მართვა, რა თქმა უნდა მოუხერხებელია. გაცილებით უკეთესი გადაწყვეტა იქნებოდა, სპეციალური სამართავი პროგრამის დაწერა, რომელსაც ექნებოდა კარგად გაფორმებული  გრაფიკული ინტერფეისი აღჭურვილი ღილაკებით, სათანადო წარწერებით, პიქტოგრამებით და სხვა.
განვიხილოთ ასეთი პროგრამის აგების საფუძვლები.
შექმენით ახალი პროექტი თქვენს Visual Basic კომპილატორში. მენიუში აირჩიეთ “Project”, “Components” და მონიშნეთ “Microsoft Comm Control”.

ზედა სურათზე წითლად  მონიშნული კომპონენტები განათავსეთ ფორმაზე ისე, როგორც ეს ქვემოთ არის ნაჩვენები.

Copy/Paste -პროცედურის საშუალებით გადაიტანეთ ქვემოთ მოყვანილი კოდი Code ფანჯარაში.

Public CommPortNumber As Integer
Public Runtext As String, Instring As String
Public ByteCnt As Integer

Private Sub Command1_Click()
On Error GoTo errr
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
MSComm1.CommPort = CommPortNumber
MSComm1.Settings = “9600,N,8,1″
MSComm1.PortOpen = True
Runtext = Text2.Text
MSComm1.Output = Runtext
Exit Sub
errr:
Label1.Visible = True
End Sub

Private Sub Form_Load()
CommPortNumber = CInt(GetSetting(appname:=”Serial”, section:=”Startup”, _
Key:=”CommPortNumber”, Default:=”1″))
Text1.Text = CommPortNumber
End Sub

Private Sub Form_Activate()
Print
Print ” 9600,N,8,1″
Label1.FontName = “MS Sans Serif”
Label1.FontSize = 14
Label1.FontBold = True
Label1.ForeColor = vbRed
Label1.Caption = “Invalid Port Number”
Label1.AutoSize = True
Label1.Visible = False
Command1.Caption = “OK”
Text2.Text = “”
CommPortNumber = CInt(Text1.Text)
On Error GoTo errr
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
MSComm1.CommPort = CommPortNumber
MSComm1.Settings = “9600,N,8,1”
MSComm1.PortOpen = True
Exit Sub
errr:
Label1.Visible = True
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
On Error GoTo errr
If MSComm1.PortOpen = True Then MSComm1.PortOpen = Falsex
Exit Sub
errr:
Label1.Visible = True
End Sub

Private Sub Text2_Click()
Text2.Text = “”
End Sub

Private Sub Text1_Change()
Label1.Visible = False
CommPortNumber = CInt(Text1.Text)
SaveSetting appname:=”Serial”, section:=”Startup”, _
Key:=”CommPortNumber”, setting:=CommPortNumber
On Error GoTo errr
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
MSComm1.CommPort = CommPortNumber
MSComm1.Settings = “9600,N,8,1”
MSComm1.PortOpen = True
Exit Sub
errr:
Label1.Visible = True
End Sub

შეინახეთ პროგრამა და მოახდინეთ მისი კომპილაცია.
ერთდროულად გაუშვით მიღებული პროგრამა და Proteus-ის სიმულაცია. პროგრამის Text1 ფანჯარაში ჩაწერეთ ვირტუალური Com პორტის ნომერი.  თუ ასეთი ნომრის პორტი არ ასებობს, გამოჩნდება შეტყობინება შეცდომის შესახებ. Text2 ფანჯარაში აკრიფეთ რაიმე ტექსტი (ინგლისურ კლავიატურაზე) და დააჭირეთ Command1.

დეტალურად გაანალიზეთ VB კოდი და MSComm კომპონენტის თვისებები.
VB პროგრამის საინსტალაციო პაკეტი “Serial_Demo_Setup.zip” შეგიძლიათ ჩამოტვირთოთ  საიტის განყოფილეიდან “Files”.

დატოვეთ კომენტარი

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s