Sunday 14 December 2014

VB6.0 :: Komunikasi serial PLC ke Komputer

sistem kerja dari program ini adalah:
jika tombol 0.01 ditekan maka lampu 10.00 akan menyala, juga data pada alamat DM100 akan diisi data #0000.
jika tombol 0.00 ditekan maka akan dideteksi Different Upnya.
kemudian data pada DM100 akan berincrement seiring kita menekan tombol 0.00nya. kemudian akan mendeteksi kondisi pada AR08.05. ini untuk mendeteksi apakah serialnya sedang dipakai atau tidak. jika tidak dipakai maka PLC akan mengirimkan data ke komputer melalui serial.
format pengiriman data:
1
2
3
AR08.05 = RS-232C Transmit Ready Flag
          untuk mendeteksi apakah Serial sedang dipakai atau tidak.
@TXD    = perintah untuk mengirimkan ke komputer. leftmost bytes first.
alamat AR08

@TXD DM100 #0000 #0002

DM100 = posisi data yang akan dikirimkan ke komputer, dalam hal ini data pada DM100 yang akan kita kirimkan
#0000 = RS-232C port specification, #0000= RS-232C port, #0001=Peripheral port
#0002 =  jumlah byte yang akan dikirim. dalam hal ini kita kirimkan 2 bytes.
jika kita mengirimkan data sebanyak 10byte maka formatnya
@TXD DM100 #0000 #0010 misalkan datanya: 1234567890
maka kita mesti menyimpan datanya di:
DM100 12
DM101 34
DM102 56
DM103 78
DM104 90
maka outputnya yang akan kita terima dikomputer:
@00EX000100020003000400050006000700080009000032*
pada program VB buatlah tampilan dibawah dengan menggunakan timer1, text1, mscomm1.
dengan sourcecode berikut:
1
2
3
4
5
6
7
8
9
10
Private Sub Form_Load()
    MSComm1.RThreshold = 1
    MSComm1.CommPort = 1 '(port PC comm1,tapi tergantung PC anda)
    MSComm1.Settings = "9600, e, 7, 2" '(harus sama PC dan PLC)"
    MSComm1.PortOpen = True
End Sub
 
Private Sub Timer1_Timer()
    If MSComm1.InBufferCount > 9 Then Text1.Text = MSComm1.Input
End Sub

sumber : https://handritoar.wordpress.com/2011/10/25/komunikasi-serial-plc-ke-komputer/#more-428

VB.NET :: Contoh Program Pendeteksi Wajah Dengan Visual Basic.Net – Source Code


kita bisa saja membuat algoritma pendeteksi wajah itu di program kita. namun itu akan sangat sulit, butuh banyak percobaan dan memakan banyak waktu. tapi, sekarang ada solusinya. ada sebuah program opensource yang mebahas tentang ini. yaitu OpenCV dan EmguCV.
  • OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision. 
  • Emgu CV is a cross platform .Net wrapper to the Intel OpenCV image processing library. Allowing OpenCV functions to be called from .NET compatible languages such as C#, VB, VC++, IronPython etc. The wrapper can be compiled in Mono and run on Linux / Mac OS X.
Dari pengertian di atas telah diberikan deskripsi dari kedua opensource tersebut. OpenCV itu adalah librari dari fungsi-fungsi pemrograman yang mengenai tentang Computer-Vision. kalau ga salah ini diprakarsai oleh Intel. dan EmguCV adalah perantara dari librari pengolah gambar dari OpenCV agar bisa dipanggil dalam pemrograman [dot]net, salah satunya VB net.
Bentuk dari librari OpenCV dan EmguCV adalah file .dll. file ini harus di sertakan satu folder dengan file .exe program kita. OK. lets Try..
Buka Visual Studio, 2008/ 2010 sama aja. trus buat project baru “Windows Form Application”, lalu masukan sebuah pictureBox.
Attribut PictureBox1
  • Dock: Fill
  • Size Mode: Zoom
Trus, Import references dari Dll milik EmguCV:
- Emgu.CV.dll
- Emgu.CV.UI.dll
- Emgu.Util.dll
Caranya:
  • lihat pada sisi kiri (jendela Visual Studio), pada solution explorer, klik kanan di “references” -> pilih “Add Reference”
  • Pilih Tab “Browse” (Saya sarankan anda telah mengkopi dll yang diperlukan: cvextern.dll, Emgu.CV.dll, Emgu.CV.UI.dll, dan Emgu.Util.dll ke dalam folder “bin\debug”) tambahkan satu persatu dll nya ke dalam reference, kecual “cvextern.dll“.
cvextern.dll tidak bisa di load ke visual studio karena dll ini tidak di desain untuk itu, tapi dengan dll dari EmguCV, kita jadi bisa dengan mudah menggunakan fungsi-fungsi milik cvextern.dll (milik OpenCV) ke dalam project [dot]net kita.
Tapi kenapa cvextern.dll perlu juga di masukan satu folder dengan dll lainya?? yaitu karena dll milik EmguCV membutuhkan cvextern.dlluntuk meload fungsi-fungsi grafis.
Setelah itu, Masukan code ini di dalam Form1.vb:


Imports Emgu.CV
Imports Emgu.Util
Imports Emgu.CV.Structure
Imports Emgu.CV.UI
Public Class Form1
    Private Sub Form1_Load() Handles MyBase.Load
        Dim p As String = Application.StartupPath
        PictureBox1.Image = Image.FromFile("image.jpg")
        Dim ImageBgr As New Image(Of Bgr, Byte)(PictureBox1.Image)
        Dim HaarXML As NewHaarCascade("haarcascade_frontalface_alt_tree.xml")
        Dim GrayImage As Image(Of Gray, Byte) = ImageBgr.Convert(Of Gray, Byte)()
        Dim ImgGraphics As Graphics =Graphics.FromImage(PictureBox1.Image)
        Dim MPen As New Pen(Brushes.YellowGreen, 8)
        ' Will take a several minute.. please wait..
        For Each m In GrayImage.DetectHaarCascade(HaarXML)(0)
            ImgGraphics.DrawRectangle(MPen, m.rect)
        Next
    End Sub
End Class
 


[!] Aku ingetin lagi, saat menjalankan program percobaan anda, pastikan dll ini berada satu folder dengan exe file anda:
- cvextern.dll 
- Emgu.CV.dll
- Emgu.CV.UI.dll
- Emgu.Util.dll
Untuk lebih jelas, silahkan DOWNLOAD PROJEKNYA DISINI

link: http://XKom.blogspot.com

VSC++ :: Camera input - OpenCV


I want to display the video being captured by the webcam in C++. I've found this code, that uses OpenCV and it's very simple:

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "cvcam.h"
#include "cv.h"
#include "highgui.h"

int main( int argc, char** argv )
{
IplImage* frame = 0;
CvCapture* capture = 0;
capture = cvCaptureFromCAM(1);
frame = cvQueryFrame( capture );
if( !capture )
{
fprintf(stderr,"Could not initialize capturing...\n");
return -1;
}
cvNamedWindow( "in", 0 );
for(;;)
{
if(!cvGrabFrame(capture)) 
break;
frame = cvRetrieveFrame(capture);
cvShowImage("in", frame );
if( cvWaitKey(10) >= 0 )
break;
}
cvReleaseCapture( &capture );
cvDestroyWindow("in");
return 0;
}

However, I don't know why it fails (in the "if (!capture)", it always enters - capture is null), and I don't know how to fix it.
I don't know if there is anyone here that could help me with that OpenCV issue. However, if there isn't, if you tell me another way to grab the camera input (and display it in a window) would be great!
I'm using Windows XP, if that matters.

VSC++ :: Simple Eye, Nose and Mouth Detection using OpenCV | Visual Studio



Berikut tahapan-tahapannya :
1. Bagi kamu yang belum install OpenCV, ikutin step by step di postingan install OpenCV dengan Visual Studio disini. Saya sarankan menggunakan OpenCV 2.1.0 karena saya menggunakan yang itu. (Biar sama :p)

2. Setelah selesai meng-install dan setting Project Directories kamu tinggal copy-paste kodingan di bawah :


#include "stdafx.h"
#include "cv.h"
#include "highgui.h"

void detect_and_draw(IplImage* img)
{
        //inisialisasi
        CvHaarClassifierCascade *cascade=0;
        CvHaarClassifierCascade *cascade1=0;
CvHaarClassifierCascade *cascade2=0;
        CvMemStorage *storage=0;

        IplImage* gray = img;

        //baca file xml untuk image detection
        if(!cascade)
        {
//untuk deteksi hidung
                char * file = "C:/OpenCV2.1/data/haarcascades/haarcascade_mcs_nose.xml";
//untuk deteksi mata
                char * file1 = "C:/OpenCV2.1/data/haarcascades/haarcascade_eye.xml";
//untuk deteksi mulut
char * file2 = "C:/OpenCV2.1/data/haarcascades/haarcascade_mcs_mouth.xml";

                cascade = (CvHaarClassifierCascade*) cvLoad(file,0,0,0);
                cascade1 = (CvHaarClassifierCascade*) cvLoad(file1,0,0,0);
cascade2 = (CvHaarClassifierCascade*) cvLoad(file2,0,0,0);
                storage = cvCreateMemStorage(0);
        }

        //mendeteksi image hidung
        CvSeq* noses =
                cvHaarDetectObjects(
                gray,
                cascade,
                storage,
                1.1,
                3,
                CV_HAAR_DO_CANNY_PRUNING,
                cvSize(10,10));

        //mendeteksi image mata
        CvSeq* eyes =
                cvHaarDetectObjects(
                gray,
                cascade1,
                storage,
                1.1,
                3,
                CV_HAAR_DO_CANNY_PRUNING,
                cvSize(20,20));

        //mendeteksi image mulut
        CvSeq* mouth =
                cvHaarDetectObjects(
                gray,
                cascade2,
                storage,
                1.1,
                3,
                CV_HAAR_DO_CANNY_PRUNING,
                cvSize(10,10));

        int i;

        //menggambar kotak merah pada bagian hidung yang ditemukan
        for(i = 0; i < (noses ? noses->total : 0); i++)
        {
                CvRect* r = (CvRect*) cvGetSeqElem(noses, i);
                cvRectangle(
                        img,
                        cvPoint(r->x, r->y),
                        cvPoint(r->x + r->width, r->y + r->height),
                        CV_RGB(255,0,0),
                        1, 20, 0
                );
        }

        //menggambar kotak biru laut pada bagian mata yang ditemukan
        for(i = 0; i < (eyes ? eyes->total : 0); i++)
        {
                CvRect* r = (CvRect*) cvGetSeqElem(eyes, i);
                cvRectangle(
                        img,
                        cvPoint(r->x, r->y),
                        cvPoint(r->x + r->width, r->y + r->height),
                        CV_RGB(0,255,255),
                        1, 20, 0
                );
        }

//menggambar kotak putih pada bagian mulut yang ditemukan
        for(i = 0; i < (mouth ? mouth->total : 0); i++)
        {
                CvRect* r = (CvRect*) cvGetSeqElem(mouth, i);
                cvRectangle(
                        img,
                        cvPoint(r->x, r->y),
                        cvPoint(r->x + r->width, r->y + r->height),
                        CV_RGB(255,255,255),
                        1, 20, 0
                );
        }

        //menampilkan gambar hasil deteksi
        cvNamedWindow("hasil");
        cvShowImage("hasil", img);

        cvWaitKey(0);
}

int main(array<System::String ^> ^args)
{
    //load image asli
        const char* filename = "dank3.jpg";
        IplImage* img = cvLoadImage(filename);

        //pemanggilan fungsi untuk deteksi wajah
        detect_and_draw(img);
}


3. Untuk yang berwarna merah sesuaikan dengan nama file foto yang sudah kalian masukkan di dalam projeknya. Kalau saya file fotonya ada di C:\Users\Ozi Priawadi\Documents\Visual Studio 2012\Projects\FaceDetection\FaceDetection\dank3.jpg. Kalau yang berwarna biru sesuaikan dengan folder instalan OpenCV yang sudah kamu buat.