วันศุกร์ที่ 12 กรกฎาคม พ.ศ. 2556

Programming (การโปรแกรม) with Visual Basic 6.0

                                                                   

What is Visual Basic?
วิชวลเบสิกคืออะไร


Visual Basic is a tool that allows us to develop Windows (Graphic User Interface - GUI) applications. 
 The applications have a familiar appearance to the user.
วิชวลเบสิก เป็นเครื่องมือของเราในการสร้างแอ็ปปลิเคชัน (โปรแกรมประยุกต์) ที่ทำงานภายใต้ระบบปฏิบัติกา
ร Windows ซึ่งแอ็ปปลิเคชันที่ได้จะมีรูปแบบการติดต่อกับผู้ใช้เป็นกราฟิก (GUI : Graphic User Interface)

 Visual Basic is event-driven, meaning code remains idle until it is called upon to respond to
 some event (e.g. mouse clicking, button pressing, menu selection, ...).  Nothing happens until an 
event is detected.  Once an event is detected, the code corresponding to that event (event procedure) is executed.  

วิชวลเบสิก จะใช้ Event (เหตุการณ์) เป็นตัวขับเคลื่อนคำสั่ง (event-driven)  หมายความว่า โค้ดของโปรแกรม 
จะยังไม่ทำอะไร (idle) จนกว่ามันจะถูกเรียกให้ตอบสนองต่อ event  (เช่น การคลิกเมาส์  การกดปุ่ม  การเลือกเมนู  ฯลฯ) 
 นั่นคือ จะไม่มีอะไรเกิดขึ้นจนกว่า event จะถูกตรวจพบ  เมื่อนั้นแหละ code ของโปรแกรมก็จะตอบสนองต่อ event
 นั้นๆ  ในลักษณะของโปรแกรมย่อยๆ หรือโมดุล (event procedure)

 How to program with Visual Basic?
จะโปรแกรมด้วยวิชวลเบสิกอย่างไร
 
 

Steps in Developing Application
ขั้นตอนการพัฒนาแอ็ปปลิเคชัน
There are three primary steps involved in building a Visual Basic application:
มีขั้นตอนหลักๆ 3 ขั้นตอน ที่เกี่ยวข้องกับการสร้างแอ็ปปลิเคชันด้วยวิชวลเบสิก
1.    Draw the user interface  ออกแบบส่วนติดต่อกับผู้ใช้
2.    Assign properties to controls  กำหนดคุณสมบัติให้กับคอนโทรล
3.    Attach code to controls  ผูกติด code เข้ากับคอนโทรล


Stop Watch Application
โปรแกรมจับเวลา


1 At the "Start-up Menu" of our Windows Desktop, let's find where "Microsoft Visual Studio
 6.0" is, and click on it.Then we can see some shortcuts to the applications of the software 
suite, and "Microsoft Visual Basic6.0" is one of them and it is also our "target software" 
right now, let's select it.
ณ  สตาร์ทอัพเมนู ที่หน้าเดสต์ท็อปของระบบวินโดวส์  นักเรียนลองหาเมนู Microsoft Visual Studio 6.0  

และคลิกเมาส์เลือก  เราจะเห็นช็อตคัตของแอปปลิเคชันต่างๆ ที่รวมกันอยู่ในซอฟต์แวร์ชุดนี้ รวมถึง Microsof
t Visual Basic6.0 ซึ่งเป็นซอฟต์แวร์เป้าหมายที่เราจะใช้ในงานนี้แหละ  เราก็เลือกซะนะ
At the "Start-up Menu of Windows", Find where the "Microsoft Visual Basic 6.0" is.
ณ สตาร์ทอัพเมนูของระบบวินโวส์  ให้หาว่า Microsoft Visual Basic 6.0 อยู่ไหน






2 We now at the main screen of Visual Basic 6.0 with its "New Project" window. Let's click on the
 "New" tab and select "Standard EXE" icon.
 ตอนนี้เราก็มาอยู่ ณ หน้าจอหลักของ Visual Basic 6.0 ซึ่งมีหน้าต่าง New Project โชว์อยู่  ให้เราเลือกแท็บ 
New และสัญรูป Standard EXE 
Select the "Standard EXE" icon  ให้นักเรียนเลือกสัญรูป Standard EXE

3 Before we go on, let's consider the components of the toolbar of Visual Basic 6.0. 
 Properties window, Run and Save project are what we have to focus on now.
ก่อนอื่น ขอให้เราลองพิจารณาแถบเครื่องมือของ Visual Basic 6.0 กันก่อน  Properties window, 
Run, Save project เป็นอะไรที่เราจะต้องโฟกัสออนกันก่อนตอนนี้ 

Design View of Visual Basic 6.0   มุมมองในโหมดออกแบบของวิชวลเบสิก

4 Controls are the genius tools that can be attached by any codes that can control any events such 
as clicking mouse or pressing key. Now the "Command Button" and the "Label" are the controls that 
we are going to use.
คอนโทรล เป็นเครื่องมืออัจฉริยะ ที่สามารถจะนำเอาโค้ดคำสั่งมาผูกติด ทำให้สามารถควบคุมเหตุการณ์ได้ อาทิ  การคลิกเมาส์ 
 หรือการกดแป้นพิมพ์  ตอนนี้คอนโทรลที่เรากำลังจะใช้งานก็คือ Command Button และ Label

Controls of Visual Basic 6.0   คอนโทรลต่างๆ ของวิชวลเบสิก 6.0

5 Visual Basic programming begins with a form which has been named "Form1"
 by default. Visual Basic form simulates itself as platform which can receive many kinds
 of objects that created by the controls. Any object has its properties that has been shown 
in the properties window.
การโปรแกรมด้วยภาษาวิชวลเบสิกนี้ จะเเริ่มจาก Form ซึ่งโปรแกรมจะกำหนดชื่อให้ก่อนเลยว่า Form1 
(เราสามารถเปลี่ยนชื่อได้)  ฟอร์มของวิชวลเบสิกจะจำลองตัวมันเองเป็นเสมือนแพล็ตฟอร์ม ที่สามารถจะรองรับ
วัตถุหรืออ็อบเจ็กต์ที่สร้างจากคอนโทรล (ด้านซ้าย)  และวัตถุนั้นมันจะมีคุณสมบัติหรือพร็อพเพอร์ตีส์ของตัวมันเอง
 โดยจะแสดงให้เราเห็นในหน้าต่างพร็อพเพอร์ตีส์ (ด้านขวา) 

Form and Controls are variety kinds of object of Visual Basic that have their own properties. 
Form และ Controls เป็นอ็อบเจ็กต์(วัตถุ) ที่หลากหลายของ Visual Basic ที่มี properties ของตนเอง
6 Here we go on creating a design job like the following picture.  
    -  Using the "Command Button" control to draw the three sequence command buttons, Command1, Command2 and Command3. 
   -  Using the "Label" control to draw the six sequence labels, Label1, 
Label2, Label3, Label4, Label5 and Label6 
ให้นักเรียนลงมือสร้างงานออกแบบ ตามรูปด้านล่างนี้เลยนะ
   -  โดยการใช้คอนโทรล Command Button วาดปุ่มคำสั่งขึ้นมาสามปุ่มตามลำดับ
   -  โดยการใช้คอนโทรล Label  วาดอ็อบเจ็กต์ต่อเนื่องกัน รวม 6 เลเบิล

Form1 would have three command buttons and six labels now.
Form 1 ที่เราออกแบบนี้ก็จะมีปุ่มคำสั่ง (command button) 3 ปุ่ม  และมีฉลาก (label) รวม 6 ฉลาก  
7 Click on "Form1", we can see its properties, rename it with "frmStopWatch" (frm is a pefix which comes from "form"). And change its caption to "Stop Watch Application".
คลิกที่อ็อบเจ็กต์ Form1 เราจะเห็น properties ของมันอยู่ทางด้านขวา  ให้เราปรับเปลี่ยนชื่อ (name) ของมันใหม่เป็น "frmStopWatch" (frm เป็นคำนำหน้าชื่อ มาจาก form นั่นเอง)  และปรับเปลี่ยน Caption (คำอธิบายอ็อบเจ็กต์) ให้เป็น "Stop Watch Application"

Form1 Properties Configurations  การตั้งค่าคุณสมบัติของอ็อบเจ็กต์ Form1


8 Click on "Command1", yes we are about to specify the properties of this object. Rename it with "cmdStart" (cmd is a prefix which comes from "command button") and also refill its caption with "&Start Timing" (& is a prefix of the key letter that a user can press on this key together with the "alt" key instead of click on this command button). 
คลิกปุ่ม Command1 เพื่อเปลี่ยนคุณสมบัติ  โดยให้ชื่อใหม่ว่า cmdStart (cmd เป็นคำนำหน้า มาจาก Command Button)  และเปลี่ยน Caption ให้เป็น "&Start Timing" (& นำหน้าตัวอักษรสำคัญที่จะบอกผู้ใช้ให้รู้ว่า เขาสามารถกดคีย์นี้ร่วมกับคีย์"alt"ที่คีย์บอร์ด เพื่อใช้งาน command button แทนการคลิกเมาส์ได้). 

Change the properties of the command button :  name and caption
ให้นักเรียนเปลี่ยนชื่อ และแค็ปชันของปุ่มคำสั่ง

Do it the same way as the previous step. ทำเหมือนขั้นตอนที่แล้ว 
Change the properties of the command button :  name and caption


10 Do it the same way as the previous step.ทำเหมือนขั้นตอนที่แล้ว

Change the properties of the command button :  name and caption


11  Change only the captions of Label1, Label2 and Label3 according to the following picture. ให้เปลี่ยนเฉพาะ Caption ของทั้งสาม Labels เท่านั้น  ไม่ต้องเปลี่ยนชื่อ (เนื่องจากเป็นแค่ป้ายกำกับเท่านั้น ไม่ได้เกี่ยวข้องกับการกำหนดโค้ดโปรแกรม)

Change the properties of the three labels :   captions  เปลี่ยนแค่แค็ปชันของสามเลเบิลแรก

12  Change the properties of the other last three labels, "Label4", "Label5" and "Label6" by renaming them to "lblStart", "lblEnd" and "lblElapsed" and erase their captions until they are blank.
เปลี่ยน properties ของ Label4, Label5, Label6 โดยเปลี่ยนชื่อเป็น lblStart, lblEnd, lblElapsed  และลบ captions ของทั้งสามเลเบิลออกจนว่างเปล่าทั้งหมด

Change the properties of Label4, Label5 and Label6 according to the picture.
เปลี่ยนชื่อของสามเลเบิลท้าย  และเคลียร์แค็ปชันให้ว่าง (blank)
13  Now we have just already designed and configured all of related objects, the next step of us is coding our program. Let's click on the menu-bar at the "View" command tab, then select the "Code" sub-command, the view-code window will show up. Yes, we are going to enter our source codes of our application here. 
มาถึงตอนนี้ เราก็ได้ทำการออกแบบ และกำหนดคุณสมบัติต่างๆ ให้กับอ็อบเจ็กต์ต่างๆ ที่เกี่ยวข้องไปเรียบร้อยแล้ว  ขั้นตอนต่อไปของเราก็คือ การใส่โค้ดให้กับโปรแกรมของเรา  ให้นักเรียนคลิกไปที่แท็บคำสั่ง View ของแถบเมนู  จากนั้นให้เลือกคำสั่งย่อย Code  หน้าต่างโค้ดก็จะปรากฏขึ้น  ใช่เลย เราจะป้อนซอร์สโค้ดโปรแกรมของเราตรงนี้แหละ

Click on the "View" command at the menu bar, then select "Code" subcommand

14  The first set of source codes is about the declarations. There will be the "(General)" at the left-top of the view-code window and the "(Declarations)" at the right-top. We have to type four lines of our following source codes.
ซอร์สโค้ดกลุ่มแรก เป็นโค้ดที่เกี่ยวข้องกับการประกาศตัวแปร  นักเรียนจะเห็นว่ามี (General) อยู่ที่หัวข้อด้านซ้าย  และ (Declarations) อยู่ที่หัวข้อด้านขวา

        1st Line is about the General Declaration  เป็นคำประกาศทั่วไป
        2nd Line is the Declaration of variable "StartTime"  ประกาศตัวแปรเพื่อรับค่าเวลาเริ่มต้น
        3rd Line is 
the Declaration of variable "EndTime" ประกาศตัวแปรเพื่อรับค่าเวลาที่หยุด
        4th Line is the Declaration of variable "ElapsedTime"
 ประกาศตัวแปรเพื่อรับค่าเวลาที่ใช้ไป
15  This step is about attaching our source code to a control object. The "cmdStart" is a command button we are going to attach the source code. Let's double click on this command button, yes, this action could bring us to a module or subprogram that could be driven by an event, _click ( ), that means this subprogram could work when this command button was clicked on. 
ขั้นตอนนี้ จะเป็นการผูกซอร์สโค้ดโปรแกรมของเราไว้กับปุ่มคำสั่ง cmdStart  ให้นักเรียนดับเบิลคลิกที่ปุ่มคำสั่งนี้ (เมื่อเราอยู่ในมุมมอง Object)  จากนั้นจะพาเราเข้าสู่ห้วงของโมดุลหรือโปรแกรมย่อย  ซึ่งโปรแกรมย่อยหรือโมดลที่ว่านี้ จะถูกขับเคลื่อนโดยเหตุการณ์ (event-driven)  ซึ่ง ณ ที่นี้ก็คือ " _click ( )" การคลิกเมาส์ของผู้ใช้โปรแกรมนั่นเอง 
 What is about this source code?  It begins with assigning the recent time value (Now) to the variable "StartTime".  Then the method "Caption" stipulates that the label "lblStart" can show up data from the variable "startTime" with the "hh:mm:ss:" format.
ซอร์สโค้ดนี้มันคืออะไรหรือ?  โค้ดจะเริ่มจากการกำหนดให้ตัวแปร StartTime เอาค่า Now คือเวลาปัจจุบันไปเก็บไว้  ต่อจากนั้นโค้ดก็จะมีวิธีการ (Method) ที่ชื่อว่า Caption  เป็นตัวกำหนดรูปแบบการแสดงค่าของเวลา โดยเอาค่าที่เก็บไว้ในตัวแปร StartTime นั้นมาแสดงผลเวลาในเลเบิล lblStart
  
Attach code to the command button "cmdStart"
ผูกโค้ดเข้ากับปุ่มคำสั่ง "cmdStart"

16  This step is similar to the previous but it turns to the "cmdEnd" command button. But it creates the expression which assigns the variable "ElapsedTime" with the difference of the variable "EndTine" and the variable "StartTine".
ในขั้นตอนนี้ ก็คล้ายกับขั้นตอนที่ผ่านมา  แต่จะมีการสร้างนิพจน์คำนวณค่าส่วนต่างของเวลา ระหว่่างตัวแปร EndTime และตัวแปร StartTime และนำไปเก็บไว้ในตัวแปร ElapsedTime
  
Attach code to the command button "cmdEnd"
ผูกโค้ดเข้ากับปุ่มคำสั่ง "cmdEnd"

17  This is the end of application with the only amazing word "End"
Attach code to the command button "cmdExit"
ผูกโค้ดเข้ากับปุ่มคำสั่ง "cmdExit"


18  Congratulation to our tough project!. This is the output of our input and process. Yes, it is the "Stop Watch Application" of us.  
ขอแสดงความยินดีกับโครงงานสุดหินนะนักเรียน  นี่คือผลที่ได้ จากการสร้างและป้อน  ประมวลผล  จนได้แอ็ปปลิเคชันนาฬิกาจับเวลา หน้าตาแบบนี้แหละน้า 

Our Graphic User Interface Application :  "Stop Watch"
แอ็ปปลิเคชันของเราที่มีรูปแบบการติดต่อกับผู้ใช้เป็นกราฟิก (GUI)
19  We have to make our project to an independent application.  Click on the "File" command at the menubar then select the "Make..to..EXE" subcommand.   
เราต้องทำให้โปรเจ็กต์ (โครงงาน) ของเราที่รันได้แล้วนี้ ให้กลายเป็นแอ็ปปลิเคชันอิสระที่สามารถรันได้เอง (โดยที่ไม่ต้องอาศัย Visual Basic)  ทำได้โดยการคลิกคำสั่ง File  ณ แถบเมนูคำสั่ง  แล้วเลือกคำสั่งย่อย Make..to..EXE  เท่านี้ก็เสร็จเรียบร้อย

Visul Basic 6.0 : Exercise แบบฝึกหัด วิชวลเบสิก 6.0



Exercise 1

Calendar/Time Display


1 Design a window application that displays the current month, day, and year. 
 Also, display the current time, updating it every second (look into the Timer control).  
Make the window look something like a calendar page.  Play with object properties to make it pretty.


ให้นักเรียนออกแบบหน้าต่างแอ็ปปลิเคชัน ที่แสดงเดือนปัจจุบัน วันที่ และปี  
และยังแสดงเวลา ณ ปัจจุบัน ที่จะอัปเดตทุกวิยาทีอีกด้วย (เหมือนกับนาฬิกาจับเวลา)  
หน้าต่างแอ็ปปลิเคชันนี้จะคล้ายเหมือนใบปฏิทิน  และให้นักเรียนตกแต่งอ็อบเจ็กต์ต่างๆ ให้ดูดี




2 Configure the properties of the related objects like the followings.
 ทำการตั้งค่าต่างๆ ให้กับอ็อบเจ็กต์ที่เกี่ยวข้อง เหมือนค่าที่กำหนดมาให้ตามนี้

Configuration 1





Configuration2



Configuration3



3  Attach the source codes to the objects. There is only the Timer "timDisplay" 
object that we have to attach our source codes to.  Although there is no any variable declared, but we have to type the code "Option Explicit" at the General Declarations module.

 ทำการผูกซอร์สโค้ด (รหัสโปรแกรม) เข้ากับอ็อบเจ็กต์  สำหรับงานนี้จะมีเพียงอ็อบเจ็กต์ไทเมอร์ ที่ชื่อ 
timDisplay เท่านั้น ที่เราจะต้องใส่โค้ดผูกไว้

Source codes that we have to type.




This is the "Sample Special" output of our project ,
(according to our "date/time" format of our machine configuration)
ตัวอย่าง ผลการรันโปรแกรม
(การแสดงผล ขึ้นอยู่กับการตั้งค่า รูปแบบ "วัน/เวลา" ของเครื่องคอมพ์ที่นักเรียนใช้งานอยู่)

วันพุธที่ 26 มิถุนายน พ.ศ. 2556

M.2/6 
Kanchanapisek wittayalai Suphan Buri
1.Kanit Pittayanurk
2.Kanachai Sompansatit
3.Komtad Tusranont
4.Jukkrit  Malithong
5.Jittakon Pukpan
6.Jirasin; Yuwachat
7.Napat Sringam
8.Nattanon Yudee
9.Naratron Sawangsri
10.Bandit Boonsawang
11.Pakkapol Ruemgrit
12.Pakawat Ubonrat
13.Pattarapon Penpoo
14.Phattarawut Chomngam
15.Pakpoom Khlaidi
16.Wongsakorn Jongsomjit
17.Suratchai Panutai
18.Adisorn Bandasak
19.Aptsit Sapan 
20.kittika Chaichueai
21.Kuntida Namuang
22.Kaimuk Heebkaew
23.Chirawadee Srisanam
24.chanikan Rodchienglam
25.Titirat Namkang
26.Natthakitta Srisukkul
27.Naruemon Choksataporn
28.Nunnapus Plailahan
29.Panisara Soowannarat
30.Piyanut Phatbok
31.Pornsiri Yuenyoug
32.Rapeeporn Santimalai 
33.Wachirawan Chainobpawat
34.Warapon Nakwong 
35.warisa khewsringam
36.Wassana Limssuwan
37.Wichitra Kerdlap
38.Sasinphat Soifahyanyong
39.Silaporn Amonmanorom
40.Supatchaya Phosee
41.Saranporn Sawangsai
42.Sirikon Maneejarern
43.Sumalinee Maneewong
44.Hirunyika Kanjana
45.Araya Khunnarong
46.Oranan Keawphanlig

What/How About Our Home Network is?


I have known from students of my computer classes that the Internet connection at their homes is of TOT provider. Yes, my internet service provider (ISP) is TOT too. What/how is my home network?  The modem-router is the main device of the network because it plays many roles as of the followings : -
   1) to simulate itself like a server computer
   2) to act as a hub/switch of the wired connection
   3) to be an access point sending packets of the wireless connection
   4) to play as an ADSL modem connecting Internet
   5) to be a router managing the how-to connect to other devices
รูทราบจากนักเรียนหลายคนที่เรียนวิชาคอมพิวเตอร์กับครูว่า ที่บ้านของพวกเขามีการเชื่อมต่ออินเทอร์เน็ตผ่านผู้ให้บริการอินเทอร์เน็ต ทศท.(TOT) ซึ่งที่บ้านครูก็ใช้บริการของ ทศท.เหมือนกัน  แล้วระบบเครือข่ายที่บ้านเราจะเป็นแบบไหน?  อุปกรณ์หลักก็คือ โมเด็ม-เราเตอร์ (modem-router) ซึ่งอุปกรณ์นี้จะทำหน้าที่หลายบทบาทด้วยกัน คือ
   1) จำลองตัวเองเป็น server computer
   2) เป็น hub/switch ของการเชื่อมต่อแบบใช้สาย
   3) เป็น access point ทำหน้าที่ส่งแพ็คเก็ตส์ในระบบเครือข่ายไร้สาย
   4) เป็น ADSL modem เชื่อมต่อ Internet
   5) เป็น router บริหารจัดการเชื่อมต่อกับอุปกรณ์/คอมพิวเตอร์อื่นในเครือข่าย

Be sure, most our home network is hybrid. One is wired while another is  wireless. Although home network is not complex, but its system is so smart and its Internet connection is so clever with ADSL technology. The superstar is a "modem-router", the genius device.
โฮมเน็ตเวิร์กที่บ้านส่วนใหญ่เป็นไฮบริด คือ ผสมกันทั้งแบบมีสาย (wired) และแบบไร้สาย (wireless)  แม้ว่าระบบโฮมเน็ตเวิร์กอาจจะดูไม่ซับซ้อนอะไรมาก  แต่ระบบเครือข่ายนี้ก็ไม่ไช่ธรรมดา การเชื่อมต่ออินเทอร์เน็ตก็ทำได้ดีด้วยเทคโนโลยี ADSL และแน่นอนว่า อุปกรณ์อัจฉริยะของระบบก็คือ"modem-router" นั่นเอง
The composition of any home network 
(e.g. home internet connection of students)

     UTP :  Unshielded Twisted Pair cables are so common in any computer rooms  e.g. classroom102 of our school. The UTP cable is caped with a connector which is called RJ-45. The RJ-45 connector will be inserted into the LAN port of any Ethernet card/router/switch/hub. (The RJ-11 connector of the phone line is smaller than RJ-45).
สายเคเบิลแบบยูทีพี (UTP) หรือสายคู่บิดเกลียวไม่หุ้มฉนวน (Unshielded Twisted Pair cables) จะพบได้ทั่วๆ ไปในห้องคอมพิวเตอร์ อาทิ ห้องเรียนคอมพ์102 ในโรงเรียนของเรา  UTP จะถูกเข้าหัวด้วยหัวต่อ หรือคอนเน็กเตอร์ (Connector) ที่เรียกว่า RJ-45  ซึ่งหัวต่อนี้จะถูกเสียบไว้ที่ช่องเสียสายแลน หรือแลนพอร์ต (LAN port)   เราเตอร์ สวิตช์ หรือฮับ  (ขณะที่หัวต่อ RJ-11 ของสายสัญญาณโทรศัพท์จะมีลักษณะเหมือนกัน แต่มีขนาดเล็กกว่า) 

 What is about ADSL? (www.wikipedia.org) : It is "Asymmetric Digital Subscriber Line" technology. This is a data communications technology that enables faster data transmission over copper telephone lines than a conventional modem can provide. (Modem is a device that manages the joint communication between the phone and the computer.)
ADSL คืออะไร? (www.wikipedia.org สารนุกรมเสรี) อธิบายว่า "Asymmetric Digital Subscriber Line" technology.  เป็นเทคโนโลยีโทรคมนาคมที่ทำให้การส่งข้อมูลผ่านสายโทรศัพท์ที่ปกติจะเป็นสายทองแดงนั้น ทำได้ดีมีประสิทธิภาพมากกว่า การใช้โมเด็มธรรมดา (Modem เป็นอุปกรณ์ที่จะทำหน้าที่บริหารจัดการสัญญาณจากโทรศัพท์และสัญญาณจาคอมพิวเตอร์ให้มาทำงานร่วมกันได้)


Another one I would like to refer to is "protocol". What is it? A protocol is a system of digital message formats and rules for exchanging those messages in or between computing systems and in telecommunications. And in our network we use the TCP/IP (comes from "Transmission Control Protocol and Internet Protocol). Now Thailand uses IPv4 protocol, but Thai government by Prime Minister Yingluck  Shinawatra is going to change the Internet protocol of the country with another version, IPv6 protocol, which has more capacity and efficiency of transmission.  
 ละมีอีกเรื่องที่ครูอยากจะพูดถึงก็คือ "โปรโตคอล" มันคืออะไร?  ถ้่าจะว่าไปนะ คำๆ นี้ มันเป็นภาษาที่ใช้ในวงการฑูตเขา คือกรณีที่ต้องมีการติดต่อสื่อสารกันระหว่างพวกฑูตของประเทศต่างๆ เขาก็จะต้องมีวิธีการ มาตรฐาน ระบบระเบียบต่างๆ ที่เข้าใจตรงกัน และเขาเรียกว่า protocol ทางวงการคอมพิวเตอร์ก็ไปขอยืมคำศัพท์ของเขามาใช้บ้าง  โปรโตคอลของเครือข่ายคอมพิวเตอร์ (www.wikipedia.org) ก็คือ ระบบของรูปแบบข่าว สารเชิงดิจิตอลและกติกา ของการแลกเปลี่ยนกันระหว่างระบบคอมพิวเตอร์และโทรคมนาคม  ซึ่งทุกวันนี้ โปรโตคอลที่เราใช้ในเครือข่ายนั้น คือ ทีซีพี/ไอพี (โปรโตคอลควบคุมการส่งข้อมูล และอินเทอร์เน็ตโปรโตคอล)  และ ตอน นี้รัฐบาลไทย ภายใต้การนำของ ฯพณฯ ยิ่งลักษณ์ ชินวัตร  ก็กำลังปรับเปลี่ยนอินเทอร์เน็ตโปรโตคอลของประเทศเรา ที่ขณะนี้เป็นเวอร์ชัน 4 ให้เป็นเวอร์ชั่น 6  เพื่อรองรับปริมาณของเครือข่าย และประสิทธิภาพที่ขยายเพิ่มขึ้น 

Because each computer of the network has its own unique "IP-address", what/how is it? As I have just told you (see, first paragraph) that the modem-router simulates itself like a server computer, sure its IPaddress must be static, e.g. (IPv4) 192.168.2.1, 192.168.1.1, 192.168.0.1 etc. , on the other hand it lets the other connected computer the dynamic/automatic IPaddress. Yes, the modem-router of the home network is the gateway to Internet.

พราะเครื่องคอมพิวเตอร์แต่ฃะเครื่องในระบบเครือข่าย ต่างก็มีรหัสไอพี (IP-address) เฉพาะตัวไม่ซ้ำกัน  เหตุไฉน/อย่างไร?  ก็ตามที่ึรูได้กล่าวไปแล้วว่า  modem-router จะจำลองตัวมันเองเป็นเสมือน server computer  แน่นอนว่า ตัวมันเองก็จะต้องมีรหัสไอพีที่แน่นอนตายตัว อาทิ (ถ้าดูตาม IPv4)  192.168.2.1, 192.168.1.1, 192.168.0.1 ประมาณนี้  ในอีกทางหนึ่งมันก็ยอมให้เครื่องอื่นๆ ที่เป็นลูกข่าย/ลูกน้อง ที่มาเชื่อม่อเครือข่ายกับมันมีรหัสไอพีแบบอัตโนมัติ  ส่วนจะเป็นอะไรนั้นก็แล้วแต่มันจะจัดให้  แต่ก็มักจะเป็นรหัสที่ต่อเนื่องกับตัวมันนั่นแหละ  อาทิ 192.168.2.3 เป็นต้น เพราะตัวมันเองเป็นเครื่องเกตเวย์ 
Teacher's home network PC/Modem-router IPaddress Configuration
use the "IPCONFIG" command to see what/how my home PC/modem-router IPaddress configuration by typing the command at the command line of Windows and what I knows are the followings 

... 192.168.2.1  is the IPaddress (IPv4) of my modem-router, Belkin brand.
... 192.168.2.3  is the IPaddress (IPv4) of my PC, configured by the modem-rounter 

รูได้ใช้คำสั่ง ณ คอมมานด์ไลน์ของ Windows7 ว่า  IPCONFIG  เพื่อต้องการทราบว่า  รหัสไอพีของเครื่องคอมพิวเตอร์ และโมเด็ม-เราเตอร์ที่บ้่านมีค่าอะไร ก็พบว่า
... 192.168.2.1  เป็นรหัส IPaddress (IPv4) ของ modem-router, ยี่ห้อ Belkin 
... 192.168.2.3  เป็นรหัส IPaddress (IPv4) ของเครื่องคอมพิวเตอร์ ที่จัดให้/กำหนดให้โดย modem-rounter 

Yes, each other computer in the network can never be configured with a static IPaddress because the modem-router as the server PC/the gateway PC cannot share Internet connection anyway.
ใช่เลย คอมพิวเตอร์เครื่องอื่นๆ ในระบบโฮมเน็ตเวิร์ก มิอาจมีค่ารหัสไอพีแบบคงตัวได้  เพราะมันจะต้องถูกตั้งเป็นอัตโนมัติไว้ให้  modem-router ในฐานะเป็น server PC/the gateway PC เป็นตัวกำหนด  ถ้าไม่เช่นนั้น  มันจะไม่สามารถแชร์การเชื่อมต่ออินเทอร์เน็ตมาให้ได้นั่นเอง