Category Archives: Dasar-2
Contoh Code modbus client VB net Membaca dan Menulis Modbus TCP device Server
Pendahuluan
Berikut ini contoh mudah membaca dan menulis dgn vb net ke device yg menggunakan protokol Modbus
Imports EasyModbus
Public Class Form1
Dim ComError
Dim ModbusClient
Dim modClient As New EasyModbus.ModbusClient
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim dataku As Integer()
Try
dataku = modClient.ReadHoldingRegisters(Convert.ToInt16(TextBox7.Text), Convert.ToInt16(TextBox8.Text))
ListBox1.Items.Clear()
If dataku.Length > 0 Then
For Each value As Integer In dataku
ListBox1.Items.Add(value)
Next
End If
TextBox4.Text = "read berhasil"
Catch ex As Exception
' MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
TextBox4.Text = ex.Message
End Try
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Modbus_Client = New EasyModbus.ModbusClient(TextBox1.Text, 502)
modClient.IPAddress = TextBox1.Text
modClient.Port = TextBox2.Text
ComError = 0
Try
modClient.Connect()
TextBox4.Text = "Communication OK!"
Catch ex As Exception
' MessageBox.Show("An error occurred: " & ex.Message, "Error Occurred", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)
TextBox4.Text = ex.Message
ComError = 1
End Try
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Try
modClient.Disconnect()
TextBox4.Text = "diskonek berhasil"
Catch ex As Exception
TextBox4.Text = ex.Message
End Try
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Try
modClient.WriteSingleRegister(Convert.ToInt16(TextBox6.Text), Convert.ToInt16(TextBox3.Text))
TextBox4.Text = "writw berhasil"
Catch ex As Exception
TextBox4.Text = ex.Message
End Try
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
' TextBox5.Text = EasyModbus.ModbusClient.ConvertRegistersToLong(modClient.ReadHoldingRegisters(4, 2))
' UShort[] holdingRegisters = modbusClient.ReadHoldingRegisters(100, 2)
Dim holdingRegisters As Integer() = modClient.ReadHoldingRegisters(4, 2)
' Convert the registers to a long integer
Dim value As Long = ModbusClient.ConvertRegistersToLong(holdingRegisters)
TextBox5.Text = value.ToString()
End Sub
End Class
Doownload Source Code disini
Untuk Modbus TCP Servernya Kita gunakan aplikasi Simulator counter produksi sbb:
Target akan increment 1 setiap sekian detik sesuai waktu cycleTime yg diset . misal cycle time = 5 , maka setiap 5 detik target akan bertambah 1.
Download aplikasi counter simulator disini
Referensi :
contoh code C# menulis-write type data long ke modbus register
buat project baru
buat form sbb
code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using www.counterproduksi.com;
namespace ConvertInt32ToMSBandLSB
{
public partial class Form1 : Form
{
// private www.counterproduksi.com.CounterEthernet MBCounter1;
private www.counterproduksi.com.CounterEthernet MBCounter1;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int PLAN = Convert.ToInt32(textBox1.Text);
int HighINT = (PLAN >> 16) & 0x0000ffff;
int LowINT = PLAN & 0x0000ffff;
int LSBUnsigned = (Int16)LowINT; // y = -1
txtMSB.Text = HighINT.ToString();
txtLSB.Text = LSBUnsigned.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(" di disable");
/*
byte[] data1 = new Byte[2];
int[] word = new int[1];
word[0] = Convert.ToInt16(txtLSB.Text);
byte[] dat = BitConverter.GetBytes((short)IPAddress.HostToNetworkOrder((short)word[0]));
data1[0] = dat[0];
data1[1] = dat[1];
try
{
// MBCounter1.WriteSingleRegister(4, 0, 30, data1);
MBCounter1.WriteDataCounter(4, 0, 5, data1);
}
catch (SystemException error)
{
MessageBox.Show(error.Message);
}
*/
}
private void button3_Click(object sender, EventArgs e)
{
try
{
MBCounter1 = new CounterEthernet("127.0.0.1", 502);
txtVersiLibrary.Text = MBCounter1.versi;
// MBCounter1.OnResponseData += new ModbusTCP.Master.ResponseData(MBCounter1_OnResponseData);
// MBCounter1.timeout = 6000;
button3.Enabled = false;
button4.Enabled = true;
button5.Enabled = true;
button6.Enabled = true;
button2.Enabled = true;
}//end try
catch (SystemException ex)
{
}
}
private void button4_Click(object sender, EventArgs e)
{
try
{
MBCounter1.disconnect();
MBCounter1.Dispose();
button3.Enabled = true;
button4.Enabled = false;
button5.Enabled = false;
button6.Enabled = false;
button2.Enabled = false;
}//end try
catch (SystemException ex)
{
}
}
private void Form1_Load(object sender, EventArgs e)
{
button4.Enabled = false;
button5.Enabled = false;
button6.Enabled = false;
button2.Enabled = false;
}
private void button5_Click(object sender, EventArgs e)
{
MessageBox.Show(" di disable");
/*
byte[] data1 = new Byte[2];
int[] word = new int[1];
word[0] = Convert.ToInt16(txtMSB.Text);
byte[] dat = BitConverter.GetBytes((short)IPAddress.HostToNetworkOrder(( short)word[0]));
data1[0] = dat[0];
data1[1] = dat[1];
try
{
// MBCounter1.WriteSingleRegister(4, 0, 30, data1);
MBCounter1.WriteDataCounter(4, 0, 4, data1);
}
catch (SystemException error)
{
MessageBox.Show(error.Message);
}
*/
}
private void button6_Click(object sender, EventArgs e)
{
byte[] data1 = new Byte[4];
int[] word = new int[2];
word[0] = Convert.ToInt16(txtMSB.Text);
byte[] dat = BitConverter.GetBytes((short)IPAddress.HostToNetworkOrder((short)word[0]));
data1[0] = dat[0];
data1[1] = dat[1];
word[1] = Convert.ToInt16(txtLSB.Text);
byte[] dat1 = BitConverter.GetBytes((short)IPAddress.HostToNetworkOrder((short)word[1]));
data1[2] = dat1[0];
data1[3] = dat1[1];
try
{
// MBCounter1.WriteDataCounter(4, 0, 5, data1);
MBCounter1.WriteMultipleRegister(4, 0, 4, data1);
}
catch (SystemException error)
{
MessageBox.Show(error.Message);
}
//======================
}
}
}
Contoh Code VB Net Kirim Terima Data String
Form VB KIrim Terima Data String komunikasi serial
Imports System.IO.Ports
Public Class Form1
Dim SpaceCount As Byte = 0
Dim RXArray(2047) As Char ‘ Text buffer. Must be global to be accessible from more threads.
Dim RXCnt As Integer ‘ Length of text buffer. Must be global too.
Dim responseText As String
‘Dim Tampung(100) As Char
Dim RXCount As Integer
Dim ReceiveByte As Byte
‘ End Sub
Private Sub receiver() Handles SerialPort1.DataReceived
End Sub
Private Sub enableChoice(ByRef state As Boolean)
portChoice.Enabled = state
baudChoice.Enabled = state
dataBitChoice.Enabled = state
stopBitChoice.Enabled = state
parityChoice.Enabled = state
timeOutBox.Enabled = state
End Sub
Public Sub serialCommInit()
baudChoice.SelectedIndex = 3
dataBitChoice.SelectedIndex = 1
stopBitChoice.SelectedIndex = 0
parityChoice.SelectedIndex = 0
If SerialPort1.IsOpen Then
closePort.Enabled = True
openPort.Enabled = False
Else
closePort.Enabled = False
openPort.Enabled = True
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call serialCommInit()
For Each COMString In SerialPort1.GetPortNames ‘SerialPort1.GetPortNames ‘ Load all available COM ports.
portChoice.Items.Add(COMString)
Next
End Sub
Private Sub clearButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles clearButton.Click
responseBox.Text = “”
SpaceCount = 0
responseText = “”
End Sub
Private Sub closePort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles closePort.Click
If SerialPort1.IsOpen Then
SerialPort1.Close()
closePort.Enabled = False
openPort.Enabled = True
enableChoice((True))
End If
End Sub
Private Sub ExitButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitButton.Click
Call closePort_Click(closePort, New System.EventArgs())
End
End Sub
Private Sub openPort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles openPort.Click
Dim sformat As String
If SerialPort1.IsOpen Then Exit Sub
‘isi baud rate yg dipilih user
SerialPort1.BaudRate = baudChoice.SelectedItem
‘ isi property parity dari combobox yg dipilih user
If parityChoice.SelectedIndex = 0 Then
SerialPort1.Parity = IO.Ports.Parity.None
ElseIf parityChoice.SelectedIndex = 1 Then
SerialPort1.Parity = IO.Ports.Parity.Even
Else
SerialPort1.Parity = IO.Ports.Parity.Odd
End If
SerialPort1.PortName = portChoice.SelectedItem
SerialPort1.DataBits = dataBitChoice.SelectedItem
SerialPort1.ReadTimeout = timeOutBox.Text
On Error GoTo ErrHandler
SerialPort1.Open()
appendlnResponse(portChoice.SelectedItem & “: Open at ” & baudChoice.SelectedItem)
SerialPort1.DtrEnable = True
openPort.Enabled = False
closePort.Enabled = True
enableChoice((False))
Exit Sub
ErrHandler:
MsgBox(SerialPort1.PortName + ” is Unavailable”)
End Sub
Private Sub appendlnResponse(ByRef s As String)
responseBox.Text = responseBox.Text & s
End Sub
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
‘Dim TextString As String
If SerialPort1.IsOpen Then
‘ TextString = commandString.Text ‘+ Chr(10)
Try
If SerialPort1.IsOpen = False Then
openCommPort()
End If
SerialPort1.Write(commandString.Text)
Call getResponse() ‘ get a response within timeout.
Catch ex As Exception
MsgBox(“ERORNYA : ” + ex.Message)
End Try
Else
MsgBox(“COM port is closed. Please select a COM port”)
End If
End Sub
Public Function openCommPort() As Boolean
‘ If portChoice.SelectedIndex = -1 Then Call serialCommInit()
Call openPort_Click(openPort, New System.EventArgs())
If openPort.Enabled = True Then
openCommPort = False
openPort.Enabled = True
closePort.Enabled = False
Else
openCommPort = True
openPort.Enabled = False
closePort.Enabled = True
End If
End Function
Private Sub getResponse()
Dim RXByte As Byte
‘beri waktu menunggu sampai data response masuk semua ke buffer dgn do-loop atau fungsi sleep
‘ Do
‘ Loop Until (SerialPort1.BytesToRead >= 10) ‘
System.Threading.Thread.Sleep(1000)
RXCnt = 0
Do
RXByte = SerialPort1.ReadByte
RXArray(RXCnt) = Chr(RXByte) ‘konversi byte ke char/ASCII code sblm disimpan ke array
RXCnt = RXCnt + 1
Loop Until (SerialPort1.BytesToRead = 0)
‘ TextBox1.Text = RXCnt.ToString
responseBox.Text = New String(RXArray, 0, RXCnt)
End Sub
End Class
Untuk test program diatas anda bisa menggunakan Arduino yg akan mereply apa yg dikirim dari VB net
berikut program/sketch arduinonya :
String readString; //main captured String
String perintah;
void setup()
{
Serial.begin(9600);
}
void loop() {
while (Serial.available()>0)
{
readString =Serial.readString();
perintah =readString.substring(0,2);
if( perintah ==”CR“) Serial.println(“CC“);
if( perintah ==”ST“) Serial.println(“OK“);
if( perintah ==”RS“) Serial.println(“OK“);
if( perintah ==”RD“) Serial.println(“OK“);
readString=””;
perintah=””;
}
}
Tips Merubah 2 bilangan type int menjadi type long dan sebaliknya dengan vb net
Tips ini antara lain berguna jika kita ingin membaca data type long tapi disimpan di 2 buah register type integer di sebuah alat modbus. seperti tampak pd gb berikut
berikut contoh code vb untuk merubah 2 register 16 bit (integer) menjadi bilangan 32 bit (long)
Dim dataLong as Long
Dim sgInt As Int16 = ModbusTCPCom2.Read(40002)
Dim unsgInt = Convert.ToUInt32(sgInt.ToString(“X8”), 16)
dataLong = unsgInt + (ModbusTCPCom2.Read(40001) * 65536)
Sedangkan jika kita ingin sebaliknya misal kita ingin membuat modbus server menggunakan vb net dan kita akan menyimpan data long (32 bit ) ke dalam 2 buah register 16 bit bisa menggunakan kode berikut
Private Sub LongToInt(ValueLong As ULong, index As Short)
Dim HighINT As UInteger
Dim LowINT As UInteger
Dim Val16 As Int16
‘Dim uVal16 As UInt16
HighINT = Convert.ToUInt16(ValueLong >> 16 And &HFFFF)
LowINT = Convert.ToUInt16(ValueLong And &HFFFF)
Val16 = Convert.ToInt16(LowINT.ToString(“X4”), 16)
ModbusRegister(index) = HighINT
ModbusRegister(index + 1) = Val16
End Sub
adapun misal kita membuat alat modbus server dengan arduino dan ingin menyimpan data type long (32bit) ke dalam 2 buah register integer 16 bit bsa menggunakan code berikut
void LongToInt(unsigned long ValueLong, int index)
{
int HighINT = (ValueLong >> 16) & 0x0000ffff;
int LowINT = ValueLong & 0x0000ffff;
ModbusRegister[index] = HighINT;
ModbusRegister[index+1] = LowINT;
}
reference www.counterproduksi.com
Mengirim email akun Gmail melalui Visual Basic
- buat form mengirim email contoh:
code program
Imports System.Net.Mail
Public Class Form4
Private Sub BtnSend_Click(sender As Object, e As EventArgs) Handles BtnSend.Click
If SendEmail() = True Then MessageBox.Show(“terkirim”)
End Sub
Private Sub Form4_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TxtSMTPName.Text = “smtp.gmail.com”
Me.Width = 400
BtnSetting.Visible = True
BtnCloseSetting.Visible = False
End Sub
Private Sub BtnClose_Click(sender As Object, e As EventArgs) Handles BtnClose.Click
Close()
End Sub
Private Function SendEmail() As Boolean
Dim success As Boolean = False
‘Set the HostName
Dim host As String = Me.TxtSMTPName.Text
‘Set the email information
Dim [From] As String = Me.TxtSender.Text
Dim [To] As String = Me.TxtTo.Text
Dim Subject As String = TxtSubject.Text
Dim Body As String = TxtBody.Text
‘Create a new MailMessage, specifying who it is From and who it is going To
‘ and set the Subject and Body
Dim Email As New System.Net.Mail.MailMessage()
Email.From = New MailAddress(From)
Email.To.Add([To])
Email.Subject = Subject
Email.Body = Body
‘================================================================================
‘Create a new SmtpClient
Dim mailClient As New System.Net.Mail.SmtpClient()
mailClient.Host = host
‘Set the port number, if it was provided
Dim port As Int32 = 0
Int32.TryParse(Me.txtPort.Text, port)
If port <> 0 Then mailClient.Port = port
Dim authenticationInfo As New System.Net.NetworkCredential(Me.txtUserName.Text.Trim(), Me.txtPassword.Text.Trim())
‘***** Authentication (If checked)
If chkAuthenticate.Checked = True Then
‘Create a new NetworkCredential,
‘ and set the User Name and Password
mailClient.UseDefaultCredentials = True
mailClient.Credentials = authenticationInfo
mailClient.EnableSsl = chkSSL.Checked
Else
mailClient.UseDefaultCredentials = False
mailClient.Credentials = authenticationInfo
mailClient.EnableSsl = chkSSL.Checked
End If
‘***** End Authentication
Try
‘Attempt to send the email, show any exceptions below
mailClient.Send(Email)
success = True
Catch ex As Exception
MessageBox.Show(ex.ToString, “ada error”)
success = False
End Try
Email.Dispose()
mailClient = Nothing
GC.Collect()
Return success
End Function
Private Sub BtnSetting_Click(sender As Object, e As EventArgs) Handles BtnSetting.Click
Me.Width = 821
BtnSetting.Visible = False
BtnCloseSetting.Visible = True
End Sub
Private Sub BtnCloseSetting_Click(sender As Object, e As EventArgs) Handles BtnCloseSetting.Click
Me.Width = 400
BtnSetting.Visible = True
BtnCloseSetting.Visible = False
End Sub
End Class
=============================================
2. Buat pasword akun Gmail untuk login melalui Aplikasi
Gmail menyediakan fasilitas login melalui aplikasi dengan cara membuat password khusus buat dipakai login melalui aplikasi .
langkah langkahnya ikuti link berikut
https://support.google.com/accounts/answer/185833
setelah anda mengikuti langkah2 yg ada di link diatas hasilnya anda akan mendapatkan password baru yg khusus buat aplikasi.
Pengetahuan Dasar Arduino : simpan data Arduino ke database mysql melalui ethernet
untuk percobaan yg harus disiapkan
-software : xampp ( webserver dan mysql server)
-hardware : arduino + ethernet shield + kabel data utp + komputer
-sedikit pengetahuan dasar script php.
Kita akan menyimpan data arduino melalui webserver (script php). disini arduino berlaku sebagai web client spt chrome atau ie
Langkah langkah
- upload sketch arduino sbb
Arduino -webserver (script php) -> mysql
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(192,168,1,10); // alamat IP komputer yg terinstall webserver + mysql
//char server[] = “www.websiteku.com”; // name address for websiteku.com (using DNS)
// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192, 168, 1, 177);
// Initialize the Ethernet client library
EthernetClient client;
void setup() {
// Open serial communications
Serial.begin(115200);
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Ethernet.begin(mac, ip);
}
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println(“connecting…”);
// if you get a connection, report back via serial:
if (client.connect(server, 80))
{
Serial.println(“connected”);
// Make a HTTP request:
client.println(“GET /latihan1/update_data.php?temperature=99 HTTP/1.1”);
client.println(“Host: http://www.google.com”);
client.println(“Connection: close”);
client.println();
} else
{
// if you didn’t get a connection to the server:
Serial.println(“connection failed”);
}
}
void loop()
{
// if there are incoming bytes available
// from the server, read them and print them:
if (client.available())
{
char c = client.read();
Serial.print(c);
}
// if the server’s disconnected, stop the client:
if (!client.connected())
{
Serial.println();
Serial.println(“disconnecting.”);
client.stop();
// do nothing forevermore:
while (true);
}
}
2. tulis script PHP berikut dan simpan dgn nama : update_data.php , tempat menyimpan di folder latihan1 di dldm folder httdoc
<?php
$servername = “localhost”;
$username = “root”;
$password = “pasword”;
$dbname = “test”;
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die(“Connection failed: ” . mysqli_connect_error());
}
$sql = “UPDATE temperature SET celsius = ‘”.$_GET[“temperature”].”‘ WHERE censor = ’12′”;
if (mysqli_query($conn, $sql)) {
echo “update ok”;
} else {
echo “Error: ” ;
}
mysqli_close($conn);
?>
3. jalankan xampp , start webserver apache dan mysql server.
4. buat tabel temperature di database test . buat menggunakan phpMyadmin
5. restart arduino
6. buka localhost/phpmyadmin lihat database test dan tabel temperatur apakah data sdh tersimpan/terupdate.
Pengetahuan Dasar VB.Net : Membuat laporan dengan Report Viewer dan Report Builder
[Draft] test
Software yang digunakan pada artikel: Visual Studio express 2013, database Sql Server express 2014 dan Report Builder 2014.
Gambar 1. Aplikasi Report Builder untuk membuat dokument lamporan ( *.rdl )
Tahapan membuat Report dengan Report Viewer
- Buat dokumen Report (*.rdl) dengan Report Builder 2014
- Buat project baru dan drag and drop report viewer dari toolbox ke form
- tambahkan textbox dan button
- import namespace untuk provider database yg dipakai dan report viwer
- Isi kode di artikel di bawah
Gambar 2. Tampilan Report viewer pada Form
kode program
Imports Microsoft.Reporting.WinForms
Imports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.ReportViewer1.RefreshReport()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim CONN As New SqlConnection
CONN.ConnectionString = “Data Source=neng-pc\sqlexpress;Initial Catalog=dbPOS;Integrated Security=True ”
CONN.Open()
Dim DA As New SqlDataAdapter
Dim sql As New SqlCommand(“select * from TBLBARANG WHERE STOK >” + TextBox1.Text + “”, CONN)
Dim tabelDataku As New DataTable
DA.SelectCommand = sql
DA.Fill(tabelDataku)
Dim BS As New BindingSource
BS.DataSource = tabelDataku
Try
Dim RDS As New ReportDataSource(“DataSet1”, tabelDataku)
Me.ReportViewer1.LocalReport.ReportPath = “D:\reportku.rdl”
Me.ReportViewer1.LocalReport.DataSources.Clear()
Me.ReportViewer1.LocalReport.DataSources.Add(RDS)
Me.ReportViewer1.RefreshReport()
Catch ex As Exception
MsgBox(ex.Message)
End Try
CONN.Close()
End Sub
End Class
sumber : modul training VB.NET MITRAFAY.COM
Pengetahuan Dasar pemrograman Database POSTGRESQL dengan VB.Net
[DRAFT]
Import Npgsql
Dim CONN As NpgsqlCONNection
Dim CMD As NpgsqlCMDand
Dim DA As NpgsqlDataAdapter
Dim DS As DataSet
DS = New DataSet
CONN = New NpgsqlCONNection(“Server=127.0.0.1;Port=5432;Userid=Test;password=test;SslMode=Disable”)
CMD = New NpgsqlCMDand
CMD.CONNection = CONN
CONN.Open()
CMD.CMDandType = CMDandType.Text
CMD.CMDandText = “SELECT * FROM “”Customers””;”
DA = New NpgsqlDataAdapter(CMD)
DA.Fill(DS)
dgCustomers.DataSource = DS
dgCustomers.DataBind()
CMD.Close()
CONN.Close()
Pengetahuan Dasar pemrograman Database dengan VB.Net
- Apa itu ADO.net ?
- Koneksi Database SQL Server dengan Sql Server data provider
- Koneksi DataBase dengan OLEDB Data Provider
- Koneksi database dengan ODBC data Provider
Mengenal ADO.NET
Pada pemrograman sebelum .NET (VB6), pengembang menggunakan teknologi akses data seperti ODBC, OLEDB, dan ActiveX Objek Data (ADO). Untuk pemrograman VB.NET, Microsoft membuat teknologi baru menciptakan cara baru untuk bekerja dengan database, yang disebut ADO.NET. dan ADO.NET bukan kelanjutan ADO teknologi sebelum NET.
ADO.NET adalah sekumpulan Class yang menyediakan layanan akses data untuk programer .NET, menyediakan seperangkat komponen untuk membuat aplikasi data yang didistribusikan.
ADO.NET adalah bagian integral dari .NET Framework yang menyediakan akses ke database .Class ADO.NET ada di namespace System.Data.dll
Didalam ADO.NET tersedia berrbagai data provider spt OLEDB, ODBC dan data provider khusus untuk database tertentu spt untuk SQL server dan oracle. Selain untuk database juga tersedia data provider untuk XML.
XML digunakan untuk pertukaran data antar system yg berbeda contoh sebuah system di linux dgn aplikasi java dan mysql akan bertukar data dgn system lain yg mengunakan os windows dgn aplikasi VB.NET dan MsAccess . Cara mudah pertukaran data antara dua system tsb adalah data yg dipertukarkan mempunyai format yang sama yaitu dlm bentuk XML. Pada artikel ini sy tdk membahas tentang XML.
Arsitektur ADO.NET
Terdapat 2 kelompok class utama dlm ADO.Net:
Pertama data provider : digunakan untuk koneksi ke database .
Kedua adalah data set : digunankan untuk menyimpan sementara (catching) dan mengelola data . Dataset berupa tabel2 . Lebih jelasnya bisa dilihat dlm arsitektur ADO.Net berikut ini:
gambar 1. Arsitektur ADO.NET
Conected dan Disconected
ADO.NET menyediakan mode conected dan disconected dlm mengelola database. Pada Mode conected client memodifikasi data dlm keadaan online sedangkan mode disconected adalah fitur baru ADO.NET gambaran mekanismenya antara lain sbb: client membuka koneksi ke server database kemudian data disimpan di buffer(dataset) client lalu koneksi server diputus setelah data diolah baru dibuat lagi koneksi ke server untuk transfer data. model disconected spt ini sangat membantu karena bisa mengurangi trafik data dlm jaringan terutama jika jumlah client sangat banyak
Gambar 2. arsitektur ADO.NET
Object2 Dataprovider digunakan untuk menghubungkan aplikasi dgn database, mengeksekusi perintah dan mengambil data, menyimpannya dalam dataset, membaca data yang diambil dan memperbarui database. object data provider yang akan kita bahas adalah bagian yg spt tampak berikut ini:
Melalui gambar arsitektur diatas saya ingin memperjelas perbedaan cara mengases database dgn conected ( client dan server database tergubung terus selama manipulasi data) dgn data reader. dan disconected , pemilihan kedua cara tsb tergantung kebutuhan aplikasi yg kita buat. misalnya untuk mengisi datagridview maka kita gunakan data adafter dan data set sedangkan jika kita ingin mengambil satu baris atau beberapa baris data maka kita gunakan data reader.
berikut penjelasan singkat bagian/object yang ada di ADO.NET
- Connection : Untuk koneksi ke database
- Command : melaksanakan perintah query sql
- DataReader : membaca data read only , data sedikit
- DataAdafter : membaca data dgn membuat buffer/catch localy
- DataSet : tempat tampungan data output dataadafter
Connection
Komponen ini digunakan untuk mengatur koneksi dengan sebuah data source..
Command
command adalah pernyataan SQL atau prosedur yang tersimpan digunakan untuk mengambil, insert, delete atau update data dalam sebuah data source. Method yang sering dipakai antara lain
- ExcuteNonQuery : tdk menhasilkan output data (delete,insert,update)
- ExcuteScalar : menghasilkan 1 data scalar (select count(*) )
- ExcuteReader : menghasilkan output 0 baris atau lebih (select )
DataReader
Datareader digunakan untuk mengambil data dari database dalam mode read-only dan mode forward.
DataSet
DataSet adalah representasi data di memori . dataset terputus dari database, ia menyimpan cached sejumlah record yang diambil dari database. Ketika sambungan dibuat dengan database, data adapter membuat dataset dan menyimpan data di dalamnya. Setelah data diambil dan disimpan dalam dataset, koneksi dengan database ditutup. Hal ini yg disebut sebagai ‘arsitektur terputus/disconected’. dataset bekerja sebagai database virtual yg berada di memori yang berisi tabel.
DataAdapter
DataAdapter merupakan bagian integral dari kerja ADO.Net karena data ditransfer ke dan dari database melalui data adafter. Data adafter mengambil data dari database dan menyimpanya ke dalam dataset selain itu data adafter juga mengupdate database.
Ketika perubahan terjadi di dataset, perubahan juga terjadi di dalam database yg dilakukan oleh data adapter. berikut pilihan untuk membuat object dataadafter
Dim DA As SqlDataAdapter=New SqlAdapter
Dim DA As SqlDataAdapter=New SqlAdapter(cmd)
Dim DA As SqlDataAdapter=New SqlAdapter(sql,conn)
Dim DA As SqlDataAdapter=New SqlAdapter(sql,connstring)
Gambar 3. blok diagram data provider
Tiap data provider mempunyai namespace masing2 yg ada di NET Framework antara lain :
- data provider untuk SQL Server namespacenya : System.Data.SqlClient
- data provider untuk Oracle namespacenya : System.Data.OracleClient
- data provider untuk ODBC namespacenya : System.Data.Odbc
- data provider untuk OLEDB namespacenya : System.Data.OleDb
1. Data Provider untuk database SQL SERVER
Data Provider untuk database SQL Server ada di namespace System.Data.SqlClient. Berikut ini beberapa class class yg sering digunakan dlm namespace tsb :
- SqlConnection: class yg digunakan untuk koneksi ke database SQL Server
- SqlCommand : class yg digunakan untuk mengeksekusi SQL query atau store procedures
- SqlDataAdapter: class yg menghubungkan dataset dan database SQL Server
- SqlDataReader : class yg digunakan untuk membaca database secara read only.
2. Data provider untuk database ORACLE
Data provider khusus untuk database Oracle tersedia di namespace System.Data.OracleClient. Berikut ini beberapa class class yg disediakan dlm namespace tsb yg sering digunakan antara lain:
- OracleConnection
- OracleCommand
- OracleDataAdafter
- OracledataReader
3. Data provider OLEDB untuk database dg teknoogi yg lama ( ms access, sql server versi < 7 )
OLEDB digunakan untuk database lama antara lain : Pradox, Dbase, MsAccess ,Mysql ,DB2 dan sql server versi lama. selain itu OLEDB juga digunakan ketika kita menggunakan 2 database yg berbeda misal kita menggunakan MsAccess dan SQL server dlm satu aplikasi secara simultan.
Data provider OLEDB harus melalui beberapa layer untuk mengakses database. sehingga lebih efisien anda menggunakan data provider yg spesifik untuk tiap database. mial untuk Oracle gunakanlah data provider yg ada di System.Data.OracleClient bgitupun untuk SQL Server lebih efisien menggunakan data provider yg tersedia di System.Data.SqlClient dari pada anda menggunakan data provider OLEDB (System.Data.OleDb).
Class class yg digunakan oleh data provider OLEDB (class class tsb ada di namespace System.Data.OleDb) antar lain:
- OleDbConnection, class untuk mengkoneksi database
- OleDbCommand, class untuk menjalankan SQL query
- OleDbDataAdapter, class untuk menghubungkan dataset dg database
- OleDbDataReader, membaca hasil output dari database
4. Data provider ODBC untuk berbagai database dg teknoogi yg lama
ODBC adalah teknologi akses data “general purpose” asli Microsoft. ODBC masih banyak digunakan untuk sumber data yang tidak memiliki provider OLE DB atau data provider .NET Framework.
provider data ODBC ada di namespace System.Data.Odbc. Arsitektur ODBC pada dasarnya adalah proses tiga-tier. data provider ODBC kurang efisien daripada komunikasi langsung dgn data provider spesifik database (sqlClient, mysqlClient, oracleClient ), jadi untuk kinerja lebih baik hindari provider data ODBC.
berikut ini beberapa class class penting dalam namespace Odbc.
- OdbcCommand
- OdbcConnection
- OdbcDataAdapter
- OdbcDataReader
- OdbcError
- OdbcParameter
- OdbcTransaction
Berikut tabel ringkasan class yang sering dipakai untuk tiap data provider
Contoh Kode Program
Sekarang waktunya kita akan lihat contoh konkrit bagaimana aplikasi VB.Net mengakses database secara “conected” dgn objek DataReader .
Contoh aplikasi mengakases database sql server dgn data provider SQL Server
Imports System.Data.sqlClient
Dim CONN As New SqlConnection
conn.ConnectionString = “Data Source=.\sqlexpress;”
Dim sql As String = “select * from tblKaryawan”
Dim DR As SqlDataReader = Nothing
CONN.Open()
Dim CMD As New SqlCommand(sql, CONN)
DR = CMD.ExecuteReader()
While DR.Read()
Console.WriteLine(“{0} | {1}”, DR(“FirstName”).ToString(), DR(1).ToString())
End While
DR.Close()
CONN.Close()
Untuk menghubungkan aplikasi vb.net dg database sql server selain dengan data provider khusus untuk sql server spt diatas ( import System.Data.SqlClient) juga bisa dengan OLEDB ataupun dgn ODBC adapun dimana letak perbedaan utamanya bisa dilihat di table berikut ini:
akan tetapi usahakan menggunakan provider spesifik untuk database sebelum menetukan pilihan kpd data provider OLEDB atau ODBC
Contoh Kode Program mengakses database SQL Server menggunakan data provider OLEDB
Import System.Data.OLEDB
Dim CONN As New OleDbConnection
conn.ConnectionString = “Provider=sqloledb;Data Source=.\sqlexpress;”
Dim sql As String = “select * from tblKaryawan”
Dim DR As OleDbDataReader = Nothing
conn.Open()
Dim CMD As New OleDbCommand(sql, CONN)
DR = CMD.ExecuteReader()
While DR.Read()
Console.WriteLine(“{0} | {1}”, DR(“FirstName”).ToString(), DR(1).ToString())
End While
DR.Close()
CONN.Close()
Contoh Kode Program mengakses database SQL Server menggunakan data provider ODBC
sebelumnya buat dsn ODBC melalui control panel
gambar 4. Menu Membuat ODBC di control panel
Adapun step step selanjut adalah sebagai berikut pd gambar dibawah ini:
Gambar 5. Langkah langkah membuat koneksi dsn ODBC
setelah selesai membuat koneksi dsnODBC dengan bantuan menu di control panel baru kita buat program untuk menggunakan nya yaitu sbb:
import System.Data.ODBC
Dim connString As String = “dsn=namaDsnODBC”
Dim sql As String = “select * from tblKaryawan”
Dim DR As OdbcDataReader = Nothing
Dim CONN As New OdbcConnection(connString)
CONN.Open()
Dim CMD As New OdbcCommand(sql, CONN)
DR = CMD.ExecuteReader()
While DR.Read()
Console.WriteLine(“{0} | {1}”, DR(“FirstName”).ToString(), DR(1).ToString())
End While
DR.Close()
contoh kode program VB.Net mengakses database MYSQL menggunakan data provider khusus MYSQL
data provider khusus MYSQL menggunakan namespace MySql.Data.MySqlClient
https://pccontrol.wordpress.com/2014/12/17/pengetahuan-dasar-koneksi-vb-net-dan-database-mysql/
contoh source code vb net lainnya bisa di download disini https://drive.google.com/file/d/1c1wlosm_K5kGsOpsiKJ_8KsdJQ_qMDnU/view?usp=sharing
Kesimpulan
- data provider ODBC dan OLEDB bisa digunakan untuk mengakses berbagai macam database
- tapi prioritaskan penggunaan data provider khusus yg sdh disediakan untuk database tsb .
- cara akses database menggunakan ODBC dan OLEDB membutuhkan waktu akses lebih lama dibanding data provider khusus untuk database tsb.
- Contoh perbedaan data provider Sql Server dgn data provider OLEDB dlm mengakses database SQL server bisa dilihat pada gambar dibawah ini
source:
- VB programming database
- modul Training mitrafay.com
Pengetahuan Dasar Membuat Aplikasi VB.Net untuk Monitoring Counter Produksi via LAN
sumber : www.counterproduksi.com
Panduan teknis untuk membaca/menulis data ke mikro counter dan Andon 7 segment maupun Andon matrik p10.
Untuk mengakses data counter menggunakan aplikasi VB.Net atau C# anda akan diberikan class library untuk setiap pembelian counter produksi. Dengan class library ini pemrograman VB.net atau C# untuk mengakses data counter menjadi sangat mudah dilakukan.
1. Menambahkan library counter* ke dalam projet VB.net
Melalui menu Project->Add reference
Lalu pada code tambahkan:
Imports CounterTCP
——————————————————————————–
2. Membuat Obect counter
Private CounterLineA As CounterTCP.Client
Private CounterLineB As CounterTCP.Client
——————————————————————————–
3. Membuat koneksi ke Counter
Try
‘ Create new client Counter and add event functions
CounterLineA = New Client(txtAlamatIPLineA..Text, NoPort)
AddHandler CounterLineA.OnResponseData, New CounterTCP.Client.ResponseData(AddressOf CounterLineA_OnResponseData)
Catch [error] As SystemException
‘MessageBox.Show([error].Message)
End Try
——————————————————————————–
4. Membaca Counter
// Membaca data Counter Line A
Try
CounterLineA.ReadDataCounter( 0, 15) ‘baca data 0 – 15
Catch [error] As SystemException
MessageBox.Show(“READ EROR”)
End Try
// Membaca data Counter Line B
Try
CounterLineB.ReadDataCounter( 0, 15) ‘baca data 0 – 15
Catch [error] As SystemException
MessageBox.Show(“READ EROR”)
End Try
——————————————————————————–
5. Menampilkan Data Counter ke Form
Private Sub CounterLineA_OnResponseData()
Dim data As Byte()
data = values
TextBox1.Text = (data(0) * 256 + data(1)).ToString() ‘ data ke-1 plan
TextBox2.Text = (data(2) * 256 + data(3)).ToString() ‘data ke-2 actual
TextBox3.Text = (data(4) * 256 + data(5)).ToString() ‘data ke-3 target
TextBox4.Text = (data(6) * 256 + data(7)).ToString() ‘data ke- 4… dst
End Sub
——————————————————————————–
6. Menulis data ke Counter
Private Sub Button9_Click()
Dim data(1) As Integer
Dim Address As UShort
Address = Convert.ToUInt16(txtAdress.Text)
data(0) = Convert.ToInt16(txtData.Text)
Try
CounterLineA.WriteDataCounter(Address, data)
Catch [error] As SystemException
MessageBox.Show([error].ToString)
End Try
End Sub
——————————————————————————–
7. Memutus koneksi aplikasi dgn Counter
CounterLineA.disconnect()
——————————————————————————–
Contoh Form menampilkan data Counter
*Class Library Counter untuk VB.net / C# disertakan pada setiap pembelian counter produksi . www.counterproduksi.com