Convert BCD to Decimal in C

Posted: Juni 12, 2013 in C

Nih mungkin ngga penting banget ya… tapi note aja buat saya.  Variabel src itu isinya bcd (0x16) walaupun hexa tapi kita semantik datanya tetap 16 dalam decimal.

((src & 0xF0 )>>4 ) * 10 + (src & 0x0F);

Pertama-tama tentunya kita buat dulu file microsoft access-nya. Untuk potongan kode untuk menulis(read) di C# .NET sebagai berikut

using System.Data.OleDb;

OleDbConnection conn = new OleDbConnection(“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Database.accdb;”);
OleDbCommand command;
string sql = “insert into table1 values(‘A’, ‘B’, ‘C’, ‘D’, ‘E’)”;
conn.Open();
command = new OleDbCommand(sql, conn);
command.ExecuteNonQuery();
conn.Close();

Sedangkan untuk membaca potongan kodenya sebagai berikut
using System.Data.OleDb;

OleDbConnection conn = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Database.accdb;");
OleDbCommand command;
string sql = "select * from table1";
conn.Open();
command = new OleDbCommand(sql, conn);

OleDbDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
  while (reader.Read())
  {
    A = reader["A"];
    B = reader["B"];
  }
}
reader.Dispose();
conn.Close();

Untuk connection string saya menggunakan Microsoft Access 2007(http://www.connectionstrings.com/access-2007). Apabila menggunakan Microsoft Access dengan versi yang berbeda connection stringnya bisa dilihat disini http://www.connectionstrings.com/access .

Apabila menggunakan ingin menggunakan DataSet

using System.Data.OleDb;

OleDbConnection conn = new OleDbConnection(“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Database.accdb;”);
OleDbCommand command;
string sql = “select * from table1”;
DataSet ds = new DataSet();
OleDbDataAdapter adapter;
conn.Open();
command = new OleDbCommand(sql, conn);

adapter = new OleDbDataAdapter(command);
adapter.Fill(ds);
adapter.Dispose();
conn.Close();

Sebenarnya sih ini udah banyak tutorialnya di Internet. Tapi buat catatan pribadi aja sih..

1. install driver hp
2. install xampp
3. cari port hp

  • klik kanan my computer
  • manage
  • pilih hpnya
  • klik kanan + properties
  • liat portnya (depannya ada COM-nya cth COM1, COM2…)

4. extract gammu di system32
5. edit file gammurc di system32

  • port = COM…(tergantung port hp)
  • connection = at115200 (biasanya hp modern yang pakai usb)

6. edit file smsdrc

  • user = root (username administrator di mysql)
  • password = (isi kalau ada)
  • pc = localhost
  • database = smsd

7. buat database smsd di mysql
8. import database mysql.sql yang sudah diextract di system32
9. buka command prompt
10. cd c:\WINDOWS\system32
11. gammu –identify (liat apakah gammu sudah mengenal hp)
12. gammu –smsd MYSQL smsdrc (jangan di close minimize aja..)

kalau mau tes dulu tanpa aplikasi insert datanya di tabel outbox dalam database smsd yang sudah dibuat. yang diisi hanya no hp dan textdecoded (yang text jangan diisi karena yang dkirim nanti hexadesimal dari kata yang kita kirimkan sama codingnya di set DEFAULT_NO COMPRESSION.Untuk aplikasi-nya bisa dibuat dengan VB, php, jsp dll…. asal bisa dikoneksikan dengan MYSQL.

link downloadnya http://www.indowebster.com/gammu__1.html

SQL Update From

Posted: Agustus 26, 2011 in Error, SQL Server

SQL Update From syntaxnya kayak gini

UPDATE
Table
SET
Table.col1 = other_table.col1,
Table.col2 = other_table.col2
FROM
Table
INNER JOIN
other_table
ON
Table.id = other_table.id

Tapi sebenarnya yang mau saya tekankan disini adalah bila mengupdate Tabel A (misalnya) maka pada from harus dilakukan join/inner join dengan Tabel A. Karena saya pernah buat kesalahan seperti ini.

UPDATE
Table
SET
col1 = a.col1,
col2 = a.col2
FROM
(
select table.* from Table
INNER JOIN
other_table
ON
Table.id = other_table.id
) a

Pada syntax yang diatas sebenarnya sama dengan yang pertama, tapi bedanya saya melakukan sub-query. Ini adalah kesalahan yang sangat fatal karena subquery akan dianggap sebuah table sendiri. Sedangkan untuk update table A dibutuhkan  from/ join dari table A juga. Hal ini dapat menyebabkan semua data akan terupdate, sangat berbahaya sekali untuk yang bekerja di data center.

Untung waktu itu cuman update status record doang, gampang restore-nya. Gimana entar update honor pegawai, sudah tidak mau membayangkan Hhuhuhuhuu…..

Biasanya saya ketemu error ini pada saat syntax foreach(). Hal ini sering terjadi pada multithread program, dimana thread A membaca List<>  yang didefinisikan/dideklarasikan secara global dan thread B melakukan modifikasi terhadap List<> tersebut.

foreach (AsterixData item in m_listAsterix)
{
//Kode  yang akan dieksekusi

}

Dimana m_listAsterix adalah list dari class AsterixData dan dideklarasikan secara global. Dimana pada saat yang bersamaan thread B memodifikasi m_listAsterix.

m_listAsterix[i].Frn4.Longitude = 4.0000000;

Hal ini dapat mengakibatkan error “Collection was modified; enumeration operation may not execute”. Kalau hanya baca saja sebenarnya simpel. Kita hanya perlu memindahkan m_listAsterix ke variable lain(temporary).Saya pernah melakukan kesalahan..

List<AsterixData> tempList = new List<AsterixData>();

tempList = m_listAsterix;

foreach (AsterixData item in tempList )
{
//Kode  yang akan dieksekusi

}

Ternyata kode diatas tidak meng-copy data, karena ketika m_listAsterix berubah maka tempList juga ikut berubah. Setelah googling akhirnya menemukan cara yang benar dalam meng-copy data dalam List

List<AsterixData> tempList = new List<AsterixData>(m_listAsterix);

foreach (AsterixData item in tempList )
{
//Kode  yang akan dieksekusi

}

 

GIS MapWindow pada Visual Studio

Posted: Juni 18, 2011 in GIS
Tag:,

MapWindow adalah tools GIS yang open source. Tapi yang saya suka kemampuan dari MapWindow
yang dapat digunakan dengan bahasa pemrograman dalam .NET(C#, C++, VB, F#, dll). Keuntungannya jelas difleksibilitas, input data dapat dari database, XML, notepad, dll. Tentunya kemudahan ini bagi pengguna .NET.

Pertama-tama download dulu download ActiveX dari situs ini. Kemudian diinstall exe yang di-download. Setelah itu pada visual studio pada bagian toolbox klik kanan -> Choose Item.

Kemudian pada tab component pilih Map Control kemudian OK

 

 

 

Setelah itu pada toolbox akan muncul control baru bernama Map Control. Tinggal Drag & Drop aja ke Form.

Misalnya kita punya enum

public enum Currency {
AFA,
ALL,
DZD,
ARS,
AWG,
USD
}

Pertama kita ubah dulu jadi array untuk dimasukkin ke drop down list, sebenernya sih cara ini ngga perlu buat konversi. Tapi nanti inginnya user pilih dari drop down list

var array = Enum.GetValues(typeof(Currency)).Cast<Currency>();
ddlCurrency.DataSource = array;
ddlCurrency.DataBind();

Nah setelah itu kia buat aja instance dari text drop down list yang dipilih

single rate = ConversionRate(Currency.USD, (Currency)Enum.Parse(typeof(Currency), ddlCurrency.Text))