Archive for the ‘Error’ Category

“Error in initializing ST-LINK device”, biasanya saya sering menemukan error ini apabila saya lupa melakukan konfigurasi pada SYS Mode. Yang seharusnya saya rubah mode-nya dari “No Debug” menjadi “Serial Wire”. Dibawah adalah contoh pesan error yang muncul.

Solusinya sebenarnya mudah saya hanya perlu menghapus/memformat MCU. STMicro sudah menyediakan tools untuk melakukan itu namanya STM32 ST-Link Utility. Untuk mendownload silahkan klik link ini https://www.st.com/en/development-tools/stsw-link004.html. Untuk proses instalasi pun mudah hanya tinggal next. Setelah installasi buka aplikasi STM32 ST-Link Utility, kemudian hubungkan ST-Link/STM32 dengan komputer. Tampilan aplikasinya seperti dibawah ini.

Selanjutnya adalah klik tombol Connect/menu Target > Connect. Ups, muncul pesan error seperti dibawah ini.

Ternyata ST-Link Utility tidak dapat melakukan koneksi dengan STM32F103C8T6. Hal yang perlu dilakukan adalah pada STM32F103C8T6, tekan dan tahan button reset (gambar dibawah) sambil klik tombol Connect/menu Target > Connect. Setelah di klik kemudian lepaskan button reset, ST-Link Utility seharusnya sudah dapat melakukan koneksi dengan MCU.

Tombol Reset Pada STM32F103C8T6
Setelah Berhasil melakukan koneksi

Untuk memformat chip, hanya perlu click button erase (yang iconnya gambar penghapus). Kemudian akan muncul confirmation box. Click OK

Setelah diformat maka MCU akan dapat dikenal lagi oleh STM32CubeIDE. Silahkan Flash ulang program tapi jangan lupa untuk rubah mode-nya dari “No Debug” menjadi “Serial Wire”

Semoga bermanfaat,

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

}