Category Archives: Dasar-2

Pengetahuan Dasar pemrograman Database dengan VB.Net

 [draft]

  • Apa itu ADO.net ?
  • Koneksi Database SQL Server data Provider
  • Koneksi DataBase  dengan OLEDB Data Provide
  • Koneksi database dengan ODBC  data Provider

Mengenal ADO.NET

Pada pemrograman sebelum .NET (VB6), pengembang menggunakan teknologi akses data seperti ODBC, OLE DB, 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  C# 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 dan mengelola data. Lebih jelasnya bisa dilihat dlm arsitektur ADO.Net berikut ini:

adonet

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

conected_disconected

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.

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.

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

Data Provider
Dataprovider digunakan untuk menghubungkan aplikasi dgn database, mengeksekusi perintah dan mengambil data, menyimpannya dalam dataset, membaca data yang diambil dan memperbarui database.

sedangkan yang dimaksud data provider  adalah  bagian yg spt tampak berikut ini:

dataprovider

Tiap  data provider  mempunyai namespace masing2 yg ada di NET Framework antara lain :

– System.Data.SqlClient  :  data provider  untuk  SQL Server
– System.Data.OracleClient :   data provider untuk  Oracle
– System.Data.Odbc   :  data provider untuk  ODBC
-System.Data.OleDb  :  data provider  untuk  OLEDB

1. Data Provider  untuk  database SQL SERVER

Data Profider SQL Server ada di namespace System.Data.SqlClient. Berikut ini  beberapa class class   yg disediakan  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 :
– OracleConnection
– OracleCommand
– OracleDataAdafter
– OracledataReader

3. Data provider  OLEDB  untuk database dg teknoogi yg lama

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 dataprovider 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 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 penyedia data database khusus dengan database (sqlClient,mysql,oracle), jadi
untuk kinerja lebih baik untuk menghindari  provider data ODBC.
berikut ini beberapa class class  penting dalam namespace Odbc.

OdbcCommand
OdbcConnection
OdbcDataAdapter
OdbcDataReader
OdbcError
OdbcParameter
OdbcTransaction

classdataprofider

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

Dim conn As New SqlConnection
conn.ConnectionString = “Data Source=.\sqlexpress;”

Dim sql As String = “select * from tblKaryawan”
Dim reader As SqlDataReader = Nothing
conn.Open()
Dim cmd As New SqlCommand(sql, conn)
reader = cmd.ExecuteReader()

While reader.Read()
Console.WriteLine(“{0} | {1}”, _
reader(“FirstName”).ToString(), _
reader(1).ToString().PadLeft(10))
End While

reader.Close()
conn.Close()


Untuk menghubungkan aplikasi  vb.net  dg  database sql server selain dengan data provider  khusu 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:

perbedaan1


Contoh Kode Program menggunakan data provider OLEDB

Dim conn As New OleDbConnection
conn.ConnectionString = “Provider=sqloledb;Data Source=.\sqlexpress;”
Dim sql As String = “select * from tblKaryawan”
Dim reader As OleDbDataReader = Nothing
conn.Open()
Dim cmd As New OleDbCommand(sql, conn)
reader = cmd.ExecuteReader()

While reader.Read()
Console.WriteLine(“{0} | {1}”,_

reader(“FirstName”).ToString(), _
reader(1).ToString().PadLeft(10))
End While

reader.Close()
conn.Close()


Contoh Kode Program menggunakan data provider ODBC 

sebelumnya buat dsn ODBC melalui control panel

odbc

Menu Membuat ODBC di control panel

Adapun step step selanjut  adalah sebagai berikut pd gambar dibawah ini:

odbcStep

Dim connString As String = “dsn=namaDsnODBC”

Dim sql As String = “select * from tblKaryawan”
Dim reader As OdbcDataReader = Nothing
Dim conn As New OdbcConnection(connString)
conn.Open()
Dim cmd As New OdbcCommand(sql, conn)
reader = cmd.ExecuteReader()

While reader.Read()
Console.WriteLine(“{0} | {1}”, _
reader(“FirstName”).ToString(), _
reader(1).ToString().PadLeft(10))
End While

reader.Close()


contoh program VB.Net dengan database MYSQL

menggunakan data provider khusus MYSQL /namespace MySql.Data.MySqlClient

https://pccontrol.wordpress.com/2014/12/17/pengetahuan-dasar-koneksi-vb-net-dan-database-mysql/

Advertisements

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.

vbcounter

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.

vbcounter

Step by step Cara Mengakses (baca/tulis)  Data Counter dengan VB.Net  via LAN (TCP)

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

form display counter

*Class Library Counter untuk VB.net / C# disertakan pada setiap pembelian counter produksi  . www.counterproduksi.com

iklan

 

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.