Blog Adi Sanjaya Global Techno Solution

Delphi, Mikrokontroler , Embedded system...Menerima Pembuatan alat berbasis mikrokontroller

LightBlog
Responsive Ads Here

Tuesday, April 12, 2016

Update running text via wifi dengan delphi 7

Kesempatan kali ini saya menuliskan tentang Update running text via wifi dengan delphi 7.

alat dan bahan yang di gunakan untuk membuat Update running text via wifi dengan delphi 7:

arduino uno
kabel data printer (usb arduino)
kabel jumper
led panel p10
ethenet shield
kabel utp
wifi router/accesspoint
laptop

software delphi
software arduino IDE




Video Update running text via wifi dengan delphi 7



library tambahan yang diperlukan dalam membuat Update running text via wifi dengan delphi 7
1. DMD
2. timerone
3. ethernet(Library Ethernet adalah bawaan Arduino IDE)
 
Source code Update running text via wifi pada arduino
#include <SPI.h>        //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h>       
#include <TimerOne.h>  
#include "SystemFont5x7.h"
#include "Arial_black_16.h"
#include <Ethernet.h>

// menuliskan MAC address and IP address .
// gateway + subnet disesuaikan dengan router

byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 125);
IPAddress gateway(192,168,1, 1);
IPAddress subnet(255, 255, 255, 0);

EthernetServer server(80);
boolean alreadyConnected = false;

//setting DMD
#define DISPLAYS_SAMPING 1
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_SAMPING, DISPLAYS_DOWN);
     

/*--------------------------------------------------------------------------------------
setiap timer mencapai waktu yang diset misal 5000 mikro detik akan memanggil fungsi tampilkan teks ke p10
--------------------------------------------------------------------------------------*/
void ScanDMD()
{
  dmd.scanDisplayBySPI();
}

void setup(void)
{

  Ethernet.begin(mac, ip, gateway, subnet);// mensetting ip dsb
  server.begin();// memulai chat server dengan port komunkasi di nomer 80
 
   Timer1.initialize( 5000 );           //period dalam microseconds untuk mengeksekusi sub program ScanDMD. jika lebih dari 5000 (5ms) maka akan terlihat kurang bagus tampilannya
   Timer1.attachInterrupt( ScanDMD );   //saat tercapai 5000mikroseconds,akan di eksekusi sub program ScanDMD isi sub program tsb = dmd.scanDisplayBySPI(), untuk di tampilkan ke p10

   dmd.clearScreen( true );   //true artinya  semua led off, false artinya semua led on
   Serial.begin(9600);// ini nantinya untuk pemantauan data melalui komunikasi serial (via usb)
}
void loop(void)
{
    EthernetClient client = server.available();
    if (client.available() > 0) {
        for(i=0; i<99; i++){
            message[i] = '\0';
        }
        //resests the index       
        index=0;
    }
    //while is reading the message
    while(client.available() > 0){
       //the message can have up to 100 characters
       if(index < (max_char-1))
       {        
           r_char = client.read();      //baca character dari client (pc)
           message[index] = r_char;     // simpan character di variable dengan index dinaikkan 1 per satu tiap ada character masuk.
           // 12345
           // 1 -- index 0
           // 2 -- index 1
           // 5 -- index 4
           index++; // index = index+1                     // naikkan index untuk menentukan panjang data cek message[index]
           message[index] = '\0';       // kosongkan index untuk nantinya menerima data selanjutnya (data baru indexdimulai dari nol)
      
     }
   }
  
   client.print(message);// respon / feeed back
 
   dmd.clearScreen( true );// hapus dmd /p10
   dmd.selectFont(Arial_Black_16);// pilih font nya
   dmd.drawMarquee(message, max_char,(32*DISPLAYS_SAMPING)-1 ,0);// tampilkan pesan
   long start=millis();
   long timer=start;
   boolean ret=false;
   while(!ret){
     if ((timer+30) < millis()) {
       ret=dmd.stepMarquee(-1,0);
       timer=millis();
     }
   }
}

sedangkan source code pada sisi delphi Update running text via wifi dengan delphi 7

unit uCLIENT;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Edit3: TEdit;
    Button2: TButton;
    Edit4: TEdit;
    ClientSocket2: TClientSocket;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button2Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure ClientSocket1Connecting(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   if (Edit1.Text='') or (Edit2.Text='') then exit;

   if Button1.Caption='Konek Ke Server' then begin
    //Masukin Alamat Dan Port Server=========
    ClientSocket1.Host:=Edit1.Text;
    ClientSocket1.Port:=StrToInt(Edit2.Text);
    ClientSocket1.Active:=true; //konekin
    //=======================================
   end else ClientSocket1.Active:=false; //Diskonekin
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9',#8,#13])  then  Key:=#0; //biar inputan hanya angka saja
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
ErrorCode:=0; //ini penting untuk mendisablekan pesan error
ShowMessage('Server Mati?');
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
//==================================================
//Bagian ini di execute pada saat Client Diskonek dari server
//==================================================
ShowMessage('Diskonek Dari Server :(');
Button1.Caption:='Konek Ke Server';
Form1.Caption:='Idle';
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
//==================================================
//Bagian ini di execute pada saat Client berhasil terkoneksi dengan Server
//==================================================
Form1.Caption:='Terhubung ke = '+Edit1.Text;

ShowMessage('Berhasil terkoneksi dengan Server di '+Edit1.Text);
Button1.Caption:='Diskonek Dari Server';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if not ClientSocket1.Active then exit; //kalau ga konek yah ga di kirim chatna
//Memo1.Lines.Add('Client >>'+Edit3.Text);

ClientSocket1.Socket.SendText(trim(Edit3.Text));//Kirim Text ke Server
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
//==================================================
//Bagian ini di execute pada saat ada text yang datang dari server
//==================================================
//Memo1.Lines.Add(Socket.ReceiveText);//masukin text yg di kirim oleh Server ke dalem memo
//memo1.Text:=memo1.Text+socket.ReceiveText;
edit4.Text:=socket.ReceiveText;
end;

procedure TForm1.ClientSocket1Connecting(Sender: TObject;
  Socket: TCustomWinSocket);
begin
//==================================================
//Bagian ini di execute SELAMA Client terkoneksi dengan Server
//==================================================
Form1.Caption:='Menghubungkan ke = '+Edit1.Text;
end;

end.


Anda membutuhkan komponen elektronik , Arduino, Sensor, Tutorial(paket belajar), jasa pembuatan alat berbasis mikrokontroler, kendali lampu via jaringan LAN, dan sebagainya ? anda dapat membelinya di  
 
 
https://www.tokopedia.com/mikroholik


No comments:

Post a Comment

Silakan dikomentari