Category Archives: Dasar-2

Pengetahuan Dasar Komunikasi (network) VB.Net dengan Arduino Ethernet

Untuk pemula daripada nanti bingung sebaiknya baca dulu teori dasar pemrograman jaringan dan  dasar network arduino 


[Draft]

Pengetahuan Dasar Komunikasi VB.Net  dengan Arduino Ethernet

 

Pendahuluan

bla bla bla hehehuhu  sabar dulu yah

Setup Hardware :

arduinoethernet0
arduino + ethernet shield

 

arduinoethernet1

Memasang ethernet shield di atas Arduino Uno dibawah

arduinoethernet1a

Pasang  kable utp  dan usb

kalau blm punya kable UTP  pergilah ke toko komputer katakan sama mba nya ” mba beli kabel UTP semeter,  dikrimping ya ke dua ujungnya”  kalau ditanya buat apa ,katakan padanya : buat mengikat hatimu hehehe.

Set Alamat IP komputer yg akan dihubungkan dgn Arduino

sy  menggunakan win 7 ,untuk set alamat IP nya sbb:

setLANpc.jpg

alamat IP PC harus dlm grup yg sama dgn Arduino konkritnya spt ini

jika alamat Arduino 192.168.1.xxx (192.168.1 adalah alamat grup, xxx adalah alamat host )

maka IP komputer  harus sama dgn yg diatas kecuali xxx harus ,nilai xxx  1 s/d 255

contoh alamat IP ethernet shield  192.168.1.177   xxx disini kita set =177.

alamat IP komputer anda  192.168.1. 9.      xxx disini kita set= 9 ( yg penting jgn 0 atau 177)

Koneksi kabel LAN  PC dan Arduino ethernet shield sbb:

arduinoethernet3

 

Program VB.Net sbg client

contoh client VB.net mengirim string :  1234#

vbclient

Program Arduino sbg server

serverarduino

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);
int i=0;
String inString = “”;
EthernetServer server(5000);
boolean alreadyConnected = false;

void setup()

{
Ethernet.begin(mac, ip);
// menunggu client
server.begin();
Serial.begin(9600);
Serial.print(“aku arduino pelayan yg sedang nunggu kerjaan”);
}
void loop() {
EthernetClient client = server.available();
if (client) {
if (!alreadyConnected) {
client.flush();   // clear bufer
Serial.println(“Wow ada tamu yg datang”);
client.println(“Hello, VB.Net ada yg bisa sy  bantu?”);
alreadyConnected = true;
}

if (client.available() > 0) {
char thisChar = client.read();     // Vb.net mengirim data angka diakhiri #
if(thisChar !=’#’)
{
inString += thisChar;
}
else
{
client.println(“hai VB.Net request sdh  kuterima tunggu sebentar ya..”);
Serial.print(“string:”);
Serial.println(inString);
Serial.print(“Nilai:”);
Serial.println(inString.toInt());
client.println(“nih aku kembalikan angkanya  aku tambah 10 ya “);
client.println(inString.toInt()+10);
client.println(“sama aku kasih bonus deh dgn hasil baca pin analog 0 : “);
int hasilPin_A0 = analogRead(A0);
client.println(hasilPin_A0);
i=0;
inString=””;
}

}
}
}

promoarduinovbnet

 

 

Pengetahuan Dasar Membaca & Menulis File dgn Vb net

Namespace yg digunakan : System.IO

Class untuk create, copy,delete,rename direktory : Class Directory

Method  Class Directory  yg sering dipakai:
Exist(path)             :   Mengecheck keberadaan file  dgn return  value boolean
CreateDirectory     :   membuat  directory
Delete(path)          :  menghapus Directory

 

Class untuk  create, copy,delete,rename file : Class File
Method  Class File  yg sering dipakai:
Exist(path)             :   Mengecheck keberadaan file  dgn return  value boolean
Delete(path)          : menghapus file
Copy(source,dest) : copy file dari path sumber ke path tujuan
Move(source,dest) : memindahkan file dari path sumber ke path tujuan

fileio

Class yg digunakan baca tulis file

  1. Class  FileStream, StreamReader dan StreamWriter  : untuk akses file text
  2. Class FileStream, BinaryReader dan BinaryWriter : untuk akses file biner

pada contoh dibawah ini digunakan membaca tulis file text.

Contoh kode VB.Net  akses file

Imports System.IO
Public Class Form1
Private Const dir As String = “C:\direktoriku\”

‘Membuat direktori

Private Sub btnBuatDirektory_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuatDirektory.Click
If Not Directory.Exists(dir) Then
Directory.CreateDirectory(dir)
MessageBox.Show(“berhasil”)
Else
MessageBox.Show(“gagal atau direkstory sdh ada”)
End If
End Sub

‘Menghapus direktori

Private Sub btnHapusDirektory_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHapusDirektory.Click
If Directory.Exists(dir) Then
Directory.Delete(dir)
MessageBox.Show(“berhasilhapus Dir”)
Else
MessageBox.Show(“hapus gagal atau DIR tdk ada”)
End If
End Sub

‘Membuat file fileku.txt di dlm direktori C:\direktoriku\

Private Sub btnBuatFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuatFile.Click
If Not File.Exists(dir + “fileku.txt“) Then
File.Create(dir + “fileku.txt“)
MessageBox.Show(“berhasil”)

FileClose()
End If
End Sub

‘Menghapus file fileku.txt

Private Sub btnHapusFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHapusFile.Click
If File.Exists(dir + “fileku.txt“) Then
File.Delete(dir + “fileku.txt“)
MessageBox.Show(“berhasilhapus”)
FileClose()
End If
End Sub

‘Menulis  data string ke file

Private Sub btnWriteFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWriteFile.Click
Dim konekFile As New StreamWriter(dir + “fileku.txt“)

konekFile.Write(TextBox1.Text + “, “)
konekFile.Write(TextBox2.Text + “, “)
konekFile.WriteLine(TextBox3.Text)

konekFile.Close()

‘Membaca semua isi file

End Sub

Private Sub btnReadFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReadFile.Click
Dim konekFile As New StreamReader(dir + “fileku.txt“)
txtAll.Text = konekFile.ReadToEnd
konekFile.Close()

End Sub

‘Membaca data file perbaris

Private Sub btnReadBaris_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReadBaris.Click
Dim objBacaFile1 As New StreamReader(dir + “fileku.txt“)
TextBox1.Text = objBacaFile1.ReadLine
TextBox2.Text = objBacaFile1.ReadLine
TextBox3.Text = objBacaFile1.ReadLine
objBacaFile1.Close()
End Sub

‘Menulis data tanpa menghapus data yg ada  dlm file

Private Sub btnWriteAppend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWriteAppend.Click
Dim objTulisFile As New StreamWriter(New FileStream(dir + “fileku.txt“, FileMode.Append, FileAccess.Write))
objTulisFile.Write(TextBox1.Text + “,”)
objTulisFile.Write(TextBox2.Text + “,”)
objTulisFile.WriteLine(TextBox3.Text)
objTulisFile.Close()
End Sub

‘Membaca data file per baris

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objBacaFile As New StreamReader(New FileStream(dir + “fileku.txt“, FileMode.OpenOrCreate, FileAccess.ReadWrite))
TextBox1.Text = objBacaFile.ReadLine
TextBox2.Text = objBacaFile.ReadLine
TextBox3.Text = objBacaFile.ReadLine
objBacaFile.Close()
End Sub

‘ Membaca  file dan parsing   data string  , contoh isi file: 123,765,987,..dst

Private Sub btnReadSplit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReadSplit.Click
Dim objBacaFile3 As New StreamReader(New FileStream(dir + “fileku.txt“, FileMode.OpenOrCreate, FileAccess.ReadWrite))

Do While objBacaFile3.Peek <> -1

Dim baris As String = objBacaFile3.ReadLine
Dim dataKolom() As String = baris.Split(CChar(“,”))
TextBox1.Text = dataKolom(0)
TextBox2.Text = dataKolom(1)
TextBox3.Text = dataKolom(2)

Loop

objBacaFile3.Close()

End Sub
End Class

Pengetahuan Dasar Membuat Grafik Real Time VB.Net Data Serial Port Arduino

Pengetahuan Dasar Membuat Grafik Real Time Data Serial Port

Aplikasi yg dibutuhkan
VB.Net
Codevision atau Arduino

ARDUINO_MODUL

Hardware yg dibutuhkan
Usb to Serial
Mikrocontroller board AVR atau Arduino board

Tahapan Pembuatan aplikasi VB.Net

-Buka project baru

-pada form tambahkan komponen Chart,timer, textbox,listbox  dan button

-Atur tata letak komponen chart,textbox,buton pada form

graph

Kode ProgramVB.Net 2010
Imports System
Imports System.IO.Ports
Imports System.Threading
Imports System.Threading.Thread
Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1
Dim data As String
Dim frek As String
Dim RXArray(2047) As Char
Dim RXCnt As Integer ‘
Dim time As String
Dim frekwensi As String
Dim engChart As New Series

Dim WithEvents COMPort As New SerialPort

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

End Sub
Private Sub ClosePort()
If COMPort.IsOpen Then
COMPort.Close()
End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If COMPort.IsOpen Then
COMPort.Close()
Label3.Text = “koneksi berhasil ditutup”

End If
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each COMString As String In My.Computer.Ports.SerialPortNames
ComboBox1.Items.Add(COMString)
Next
Chart1.Series.Clear()
Chart1.Titles.Add(“data serial real time”)
engChart.Name = “analog in”
engChart.ChartType = SeriesChartType.Line
Chart1.Series.Add(engChart)
Chart1.ForeColor = Color.Cyan
ComboBox1.Focus()
RXCnt = 0

End Sub

‘=================================================================

‘=================================================================
Private Sub Receiver(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles COMPort.DataReceived
Dim RXByte As Byte

Do
RXByte = COMPort.ReadByte
RXArray(RXCnt) = Chr(RXByte)

If Chr(RXByte) = Chr(13) Then
Me.Invoke(New MethodInvoker(AddressOf Display))
RXCnt = 0
End If
RXCnt = RXCnt + 1

Loop Until (COMPort.BytesToRead = 0)
End Sub

Private Sub Display()
data = (New String(RXArray, 1, RXCnt))

TextBox1.Text = data

DoUpdate()
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
time = TimeOfDay
End Sub
Public Sub DoUpdate()

Try
engChart.Points.AddXY(time, data)
Catch ex As Exception

Label3.Text = ex.Message
Finally

End Try
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If COMPort.IsOpen Then
COMPort.RtsEnable = False
COMPort.DtrEnable = False
ClosePort()

Application.DoEvents()
Sleep(200)
End If
COMPort.PortName = ComboBox1.Text
COMPort.BaudRate = 9600
COMPort.WriteTimeout = 2000
Try
COMPort.Open()
Catch ex As Exception
MsgBox(ex.Message)
End Try

If COMPort.IsOpen Then
COMPort.RtsEnable = True
COMPort.DtrEnable = True

Label3.Text = “koneksi berhasil dibuka”
End If
End Sub
End Class

kode program Arduino
void setup() {
Serial.begin(9600);
}
void loop() {
// baca  analog pin 0:
int sensorValue = analogRead(A0);
// kirim hasil ke serial
Serial.println(sensorValue);
delay(1000);
}

Kode progrtam AVR codevision

/*****************************************************
Date : 13/08/2016
Chip type : ATmega16
Clock frequency : 11,059200 MHz
kontinyu kirim data :50987<0D>60734<0D>dst..
*****************************************************/

#include <mega16.h>
#include <stdio.h>
#include <delay.h>

unsigned int i;
void main(void)
{
// 8 Data, 1 Stop, No Parity
// Baud rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;

while (1)
{
i++;
putchar(i/1000 %10 + 0x30);
putchar( i/100 %10 + 0x30);
putchar(i/10 %10 + 0x30);
putchar(‘.’);
putchar(i % 10 + 0x30);
putchar(‘\r’) ;
delay_ms(600);

};
}

promoarduinovbnet

Pengetahuan dasar mengirim Email dengan VisualBasic VB.Net via Outlook

 

1.download: class library  Microsoft.Office.Interop.Outlook

2. copy file Microsoft.Office.Interop.Outlook.dll ke bin/debug   di folder project

4.add reference Microsoft.Office.Interop.Outlook pada project VB anda

3. buat program spt dibawah ini

==================================================================

Imports outlook = Microsoft.Office.Interop.Outlook

Module ModuleKirimEmail

Public Sub kirimEmail(ByVal alamatEmail As String, ByVal subjekemail As String, ByVal bodyemail As String)

Dim pesanemail As outlook.MailItem
Dim AplikasiOutlook As New outlook.Application
Try
pesanemail= AplikasiOutlook.CreateItem(outlook.OlItemType.olMailItem)
Dim penerima As outlook.Recipients = pesanemail.Recipients
penerima.Add(alamatEmail)
pesanemail.Subject = subjekemail
pesanemail.Body = bodyemail
pesanemail.BodyFormat = outlook.OlBodyFormat.olFormatHTML
pesanemail.Send()
Catch ex As Exception
MessageBox.Show(“Email tdk terkirim”)
Finally
pesanemail = Nothing
AplikasiOutlook = Nothing
End Try
End Sub

=======================================================================

pada form lain method di modul bisa dipanggil dgn

CALL kirimEmail(“alamatemail@gmail.com”, “subjekemail”, “apa kabar…”)

Pengetahuan Dasar Mengirim SMS dengan Visual Basic Net (VB.Net)

draft

Button1_Click()
SerialPort1.Open()
SerialPort1.WriteLine(“AT” & vbCrLf)
Threading.Thread.Sleep(100) delay
SerialPort1.WriteLine(“AT+CMGF=1” & Chr(13) & vbCrLf)’ set modem ke text mode
Threading.Thread.Sleep(100)

‘ jika no sms center sdh ada  dimodem 1 baris code ini ga perlu
SerialPort1.WriteLine(“AT+CSCA=” & Chr(34) & “+62no sms center” & Chr(34) & vbCrLf)
Threading.Thread.Sleep(100)
SerialPort1.WriteLine(“AT+CMGS= ” & Chr(34) & textBoxnoHP.text & Chr(34) & vbCrLf)
Threading.Thread.Sleep(100)
SerialPort1.WriteLine(“pesan” & Chr(26))
Threading.Thread.Sleep(100)
SerialPort1.Close()

end sub

 

*keterangan

‘chr 34 adalah karakter double quote( “  )

‘chr(26) adalah CTRL-Z

‘‘AT+CSCA   set no Service Centers SMS

Pengetahuan Dasar User Interface (Desain Form) Visual Basic net

Pengetahuan Dasar User Interface (Desain Form) Visual Basic net

Langkah Langkah

Pada form tambahkan Grupbox1 set Dock= top

form2

Tambahkan grupbox2 set Dock=Bottom

form3Tambahkan DataGridview set propertis Dock = Fill form4

Tambahkan Grupbox3 dan 4 di dlm grupBox2  , kedua dock = left

form6

Tambahkan 3 buah Button ke dlm brupbox 3,    semua dock=left

form7

Set textAlign tombol =BottomCenter

form8

Menambahkan gambar icon pada tombol

form9

hasil akhir

form10

Penjelasan  form lainnya  dan coding ada di DVD video tutorial 

 

Pengetahuan Dasar Pemrograman (cara mudah )control monitoring dgn microcontroller, Modbus RTU dan VB.net

Under Construction  (yg tertarik artikel ini harap comment nya :-)

PENDAHULUAN

Alangkah baiknya apabila alat atau  aplikasi control dan monitoring yg kita buat menggunakan  standar supaya orang lain mudah menggunakannya.  Untuk aplikasi Control dan monitoring salah satu protokol yg banyak dipakai industri adalah Modbus RTU.

Protokol Modbus RTU terdiri dari Master dan Slave , master dan slave bisa berupa PC, smart device,  PLC ataupun microcontroller (AVR,Arduino dll) .

Untuk pembahasan detail ttg modbus anda bisa baca di artikel lain di blog ini atau di tempat lain.

Tapi sekali lagi (dengan bantuan library saat membuat aplikasi vb.net  master modbus dan bantuan serial to modbus board untuk modbu slave ) Anda tdk perlu mendetail memahami modbus rtu cukup dari contoh yg akan disajikan anda sdh dapat mengerti cara pembuatannya.

Pada  kesempatan kali ini sy akan membahas cara yg paling mudah membuat aplikasi VB net yg mengakses Register register modbus RTU. Yaitu dengan menggunakan library modbus (*.dll) untuk VB.net yg mana bisa anda dapatkan  gratis .

Adapun untuk slave modbus anda bisa membuat dari aplikasi microcontroller ( AVR , arduino dll)  dgn tambahan modul board serialToModbus  yg sy buat menggunakan atmega128.  Jadi anda tdk perlu membuat code program modbus supaya anda fokus ke aplikasinya.TTLTOMODBUS2

 

     prototive serial to modbus made by PCcontrol.  ada atmega128 dibalik pcb :-)

Gambar  networknya

serialtomodbusaplikasi

 

MEMBUAT APLIKASI MASTER MODBUS DENGAN VB.NET

Baiklah saya mulai dari Aplikasi master  modbus. (pada PC dengan menggunakan  VB.net)

cara dan contohnya bisa dibaca di artikel berikut :

https://aplikasimanufaktur.wordpress.com/training/pemrograman/pemrograman-counter-produksi-dgn-vb-net/

Dari artikel pada link  diatas sdh cukup jelas cara penggunaan modbus library untuk membuat master modbus menggunakan VB.net.

MEMBUAT APLIKASI SLAVE PADA MICROCONTROLLER.

selanjutnya kita buat aplikasi  di microcontrollernya untuk slave modbus nya, pada contoh ini sy gunakan  microcontroller AVR dgn bantuan codevision.

fungsi yg bisa dilakukan sementara ini adalah

  • FC03 membaca sekaligus beberapa data Register.
  • FC05 menulis 1 buah coil (ON/OFF)
  • FC 16 menulis banyak data ke registers

 

to be continue…..

 

Contoh Program C# Menyimpan Data string di Slave Modbus RTU

Seperti kita ketahui bahwa type data yg dipakai dlm Modbus RTU,  master atau slave adalah integer.namun  seringkali kita membutuhkan menyimpan data dalambentuk string / ascii . untuk ini kita bisa mensiasati memperlakukan string/ kode  ascii sebagai integer.

modbus_string

Gambar 1.  Contoh sebuah Slave Modbus RTU  yg menerima/menyimpan “data string”

Untuk jelasnya langsung saja kita lihat contoh program di PC sebagai Master modbus yg akan menulis string berupa 8 buah kode ascii   ke modbus slave.

1.Buatlah project C# baru

2. buat form dan isi dengan objek  textBoxt  ganti namamenjadi txtDataString  dan Buton menjadi btnSimpan spt pada gambar dibawah ini

datastring

isikan kode berikut ini

private void btnSimpan_Click(object sender, EventArgs e)
{
int i,j,tambahanchar;
byte address = 1; // alamat slave yg akan ditulis

ushort[] value = new ushort[4];

if (txtDataString.Text.Length < 8) // tambahkan space
{
tambahanchar = 8 – txtDataString.Text.Length;
for (j = 0; j < tambahanchar; j++)
txtDataString.Text =txtDataString.Text + ” “;

}

if (txtDataString.Text.Length > 8) // potong string
{
MessageBox.Show(“batas max 8 huruf”);
txtDataString.Text = txtDataString.Text.Substring(0, 8);
}

this.Convertstrtohex();

for (i = 0; i < 4; i++)
value[i] = Convert.ToUInt16(datasend[i]);

if (mb.Open(lstPorts.SelectedItem.ToString(), Convert.ToInt32(lstBaudrate.SelectedItem.ToString()),
8, Parity.None, StopBits.One))
{
try
{

if (ModbusObjek.SendFc16(address, 8, (ushort)4, value)) ;   // modbus fungsi 16 menyimpan data ke beberapa register
{
lbstatus.Text = “berhasil ditulis”;
}

}
catch (Exception err)
{
lbstatus.Text =”gagal ditulis”;
}
}

mb.Close();
}

private void Convertstrtohex()
{ //BUAT ARRAY STRING HEXA
// AB CD EF GH
//4142 4344 4546 4748
// 0 4 8 12
// 0 1 2 3
string hexResult, SubstringResult, nilairegister;
hexResult = this.ConvertToHex(txtDataString.Text).ToString();
SubstringResult = hexResult.Substring(0, 4);
nilairegister = (int.Parse(SubstringResult, System.Globalization.NumberStyles.HexNumber)).ToString();

for (int i = 0; i < 4; i++)
{

datasend[i] = (int.Parse(hexResult.Substring(i * 4, 4), System.Globalization.NumberStyles.HexNumber)).ToString();

}

}

public string ConvertToHex(string asciiString)
{
string hex = “”;
foreach (char c in asciiString)
{
int tmp = c;
hex = hex + String.Format(“{0:x2}”, (uint)System.Convert.ToUInt32(tmp.ToString()));
}
return hex;
}

Kesimpulan

Modbus RTU tetap tidak bisa  menyimpan data kode ascii  secara langsung. contoh diatas adalah merubah tiap kode ascii dari sebuah string menjadi type integer.

Pengetahuan Dasar Modbus RTU dengan Arduino dan VB net

UNDER CONSTRUCTION… sensorGerakForm

Kode program VB.net dgn database mysql diatas bisa di download di http://www.4shared.com/zip/RNbs85zqce/sensorGerakVBmysql.html

sensoriR

Berikut ini contoh kode slave modbus dengan Arduino

#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
#define delaylcd 20

int counter1=0;
int counter2=0;
int counter3=0;
int counter4=0;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int sensor1 = 6;
const int sensor2 = 7;
const int sensor3 = 8;
const int sensor4 = 9;

// variables will change:
int sensor1State = 0;
int sensor2State = 0;
int sensor3State = 0;
int sensor4State = 0;
/*
This example code shows a quick and dirty way to get an
arduino to talk to a modbus master device with a
device ID of 1 at 9600 baud.
*/

//Setup the brewtrollers register bank
//All of the data accumulated will be stored here
modbusDevice regBank;
//Create the modbus slave protocol handler
modbusSlave slave;

void setup()
{
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
lcd.begin(16, 2);
//Assign the modbus device ID.
regBank.setId(1);

/*
modbus registers follow the following format
00001-09999 Digital Outputs, A master device can read and write to these registers
10001-19999 Digital Inputs, A master device can only read the values from these registers
30001-39999 Analog Inputs, A master device can only read the values from these registers
40001-49999 Analog Outputs, A master device can read and write to these registers

Analog values are 16 bit unsigned words stored with a range of 0-32767
Digital values are stored as bytes, a zero value is OFF and any nonzer value is ON

It is best to configure registers of like type into contiguous blocks. this
allows for more efficient register lookup and and reduces the number of messages
required by the master to retrieve the data
*/

//Add Analog Output registers 40001-40020 to the register bank
regBank.add(40001);
regBank.add(40002);
regBank.add(40003);
regBank.add(40004);
regBank.add(40005);
regBank.add(40006);

/*
Assign the modbus device object to the protocol handler
This is where the protocol handler will look to read and write
register data. Currently, a modbus slave protocol handler may
only have one device assigned to it.
*/
slave._device = &regBank;

// Initialize the serial port for coms at 9600 baud
slave.setBaud(9600);
}

void loop()
{
//put some data into the registers
regBank.set(40001,1);
regBank.set(40002,2);
regBank.set(40003,2);
regBank.set(40004,4);
regBank.set(40005,5);
regBank.set(40006,6);
lcd.setCursor(0, 0);
lcd.print(“in-out1 in-out2”);

while(1)
{
delay(delaylcd);

if (digitalRead(sensor1) == LOW)
{
delay(delaylcd);
counter1++;
lcd.setCursor(0, 1);
lcd.print(counter1);

lagi:
delay(delaylcd);
if(digitalRead(sensor1) == LOW)
{ goto lagi;}
delay(delaylcd);

}
//======================================
//===========================

if (digitalRead(sensor2) == LOW)
{
delay(delaylcd);
counter2++;
lcd.setCursor(4, 1);
lcd.print(counter2);

lagi2:
if(digitalRead(sensor2) == LOW)
{ goto lagi2;}
delay(delaylcd);

}
//======================================

//===========================
if (digitalRead(sensor3) == LOW)
{
delay(delaylcd);
counter3++;
lcd.setCursor(9, 1);
lcd.print(counter3);
lagi3:
if(digitalRead(sensor3) == LOW)
{ goto lagi3;}
delay(delaylcd);

}
//======================================
//=========================================
//===========================
if (digitalRead(sensor4) == LOW)
{
delay(delaylcd);
counter4++;
lcd.setCursor(13, 1);
lcd.print(counter4);
regBank.set(40001, (word) random(0, 32767));
lagi4:
if(digitalRead(sensor4) == LOW)
{ goto lagi4;}
delay(delaylcd);

}
//======================================
//regBank.set(40001, (word) random(0, 32767));
// lcd.setCursor(1, 1);
// lcd.print(regBank.get(40003));

slave.run();
}
}

Pengetahuan Dasar Koneksi VB.Net dan Database MYSQL

under construction Pengetahuan Dasar Koneksi VB.Net dan Database MYSQL

adonet

untuk memahami  bagaimana C# atau VB.net dihubungkan dengan data base anda bisa baca artikel  ttg ADO.Net

Karena Net Framework tdk menyediakan data provider untuk database MYSQL maka  untuk menghubungkan VB.Net dengan Database MYSQL  kita membutuhkan  mysql connector  untuk  aplikasi .NET (C# atau VB.Net)  yg bisa anda download di  http://dev.mysql.com/downloads/file.php?id=454512

Contoh Program

  • Buat tabel tabelContoh di database MYSQL
  • Buatlah project baru VB.Net
  • Tambahkan referensi  mysql.data.dll (klik menu add reference arahkan ke mysql.data )  lokasi  mysql.data.dll ada di C:\Program Files\MySQL\MySQL Connector Net 6.3.5\Assemblies\v2.0mysqladdref
  • buat modul (dgn  mengklik menu Project->Add Module) isi dgn code  sbb:

Imports MySql.Data.MySqlClient

Module Module1
Public CONN As MySqlConnection
Public DA As MySqlDataAdapter
Public DS As New DataSet
Public CMD As MySqlCommand
Public DR As MySqlDataReader
Public STR As String

Sub Koneksi()
STR = “server=” & “localhost” & “;” & “user id=” & “pccontrol” & “;” & “password=” & “xyz1234” & “;” & “database=test”

CONN = New MySqlConnection(STR)
If CONN.State = ConnectionState.Closed Then
CONN.Open()
End If
End Sub
End Module

  • Pada form1 buat:
  • 3 tombol  ganti namanya menjadi  simpan , edit  dan hapus
  • 2 buah textbox : TextBox1 dan TextBox2
  • 1 buah Datagridview ganti namanya menjadi DGV
  • contohvbmysql
  • tambahkan kode berikut ke form1

Private Sub simpan_Click( ….)
Call Koneksi()
Dim simpan As String = “insert into tableContoh values(‘” & TextBox1.Text & “‘,'” & TextBox2.Text & “‘)”
CMD = New MySqlCommand(simpan, CONN)
CMD.ExecuteNonQuery()
End sub

Private Sub edit_Click( ….)

Dim edit As String = “updatetableContoh set  no='” & TextBox1.Text & “‘, nama='”TextBox2.Text & “‘ where no='” & TextBox1.Text & “‘”
CMD = New MySqlCommand(edit, CONN)
CMD.ExecuteNonQuery()

End sub

Private Sub hapus_Click( ….)

Call Koneksi()
Dim hapus As String = “delete from tabelContoh where no='” & TextBox1.Text & “‘”
CMD = New MySqlCommand(hapus, CONN)
CMD.ExecuteNonQuery()

End sub

  • tambahkan kode untuk mengisi datagridview DGV sbb pada form1_load:                                                                               Call Koneksi()
    DA = New MySqlDataAdapter(“select * from tabelContoh”, CONN)
    DS = New DataSet
    DA.Fill(DS)
    DGV.DataSource = DS.Tables(0)
    DGV.ReadOnly = True

Lihat hasilnya dengan menekan tombol  F5

Sekarang kita tambahkan textbox3  untuk pencarian nama, setelah nama ditemukan maka data tsb ditampilkan di gridview DGV,    tambahkan kode berikut:

Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Call Koneksi()
CMD = New MySqlCommand(“select * from tableContoh where nama = ‘ ”  & TextBox2.Text & ” ‘ “, CONN)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
Call Koneksi()
DA = New MySqlDataAdapter(“select * from tabelContoh where nama = ‘ ” & TextBox2.Text & ” ‘ “, CONN)
DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
Else
MsgBox(“Nama tidak ditemukan”)
End If
End Sub

Lihat hasilnya dengan menekan tombol  F5

referensi :

http://www.konsultasivb.com

http://www.tutorialspoint.com/vb.net/vb.net_database_access.htm