C/C++

adapter pattern

adapter pattern gibi facade ve decorator pattern‘leri var. bunlara nesne yonelimli programlama dilleri icin structural pattern’ler deniyor. data ismindeki structure’daki datalari kullanan c fonk’lari var. bunlar plotter_turn_on, plotter_turn_off, plotter_has_ink, plotter_circle, plotter_square fonk’lari. bu fonk’lari hic bozmadan cpp kodlari icinde kullanmak istersek plotter ismindeki class icinden cagirabiliyoruz. yani cagirdigimiz fonk’lari artik plotter_turn_on() seklinde degil, plotter.turn_on() seklinde cagirabiliyoruz. class ile cagirdigimiz fonk’larin parametrelerini de structure icindeki datalara atiyoruz. adapter class’lari ile diger class’lara ya da c++’ta yazilmamis c fonk’larina erisim saglanabilir. »

adaptive partitioning

partitioning’ten kasit CPU’nun bolumlendirilmesi. Rtos’larin yapabildigi linux’larin yapamadigi bir ozellik bu. qnx’in rtos’u (neutrino) bunu yapabiliyor. yazilan programlar bolumlendirme ile CPU’nun kendine ayrilan bolumlerinde calisiyor. programlar statik degil dinamik calisiyorsa adaptive partitioning mantigi devreye giriyor. Bu sayede yazilimlarin kendilerine ayrilan CPU kisimlarinin otesine gecebilmeleri saglaniyor. partitioning’in amaci yazilimlarin birbirlerinden etkilenmemesi. kaynak »

binary coded decimal

binary coded decimal – BCD 25 decimal sayisinin BCD’ye cevrilmesi - zaten BCD isminden de anlasilacagi sekilde binary olarak kodlanmis decimal demektir 2 0010 5 0101 25 00100101 25 sayisinin normal binary’ye cevrilmesi 25 0x19 1 0001 9 1001 19 00011001 »

bsp

Board support package In embedded systems, a board support package (BSP) is an implementation of specific support code (software) for a given (device motherboard) board that conforms to a given operating system. It is commonly built with a bootloader that contains the minimal device support to load the operating system and device drivers for all the devices on the board. Some suppliers also provide a root file system, a toolchain for building programs to run on the embedded system (which would be part of the architecture support package), and utilities to configure the device (while running). »

can bus

genelde otomotiv haberleşmesidir. Diferansiyel haberleşmedir. 2 tellidir. Half dublextir. Diferansiyel hat olusu, 2 telli olusu ve half duplex olusundan dolayi rs485’e benzer. Rs485’ten farkli taraflari sudur: rs485’teki gibi bir master/slave durumu yoktur. Cünkü rs485’teki slave’lerin hepsi aynı hiyerarşidedir fakat can’deki cihazlarin oncelikleri vardir. Can bus’ta cihazlardan biri digerlerine data basarken eger oncelikli cihazlardan birinden data gelirse tüm haberleşme (bir cihaz data gonderiyor bile olsa) kesilir ve oncelikli cihazin gonderdigi data hatta hakim olur. »

crc hesabi

Cyclic Redundancy Check - modbus icin kullanildi. dil : c crc calculation : yasin tasan date : march 2015 #include "stdafx.h" #include "windows.h" const unsigned char auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; // Table of CRC values for low–order byte // const unsigned char auchCRCLo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 }; unsigned int i = 0; unsigned char uchCRCHi = 0xFF; unsigned char uchCRCLo = 0xFF; unsigned char uIndex; unsigned char Continuous_Data_Buffer[300]; unsigned int buffer_index = 7; unsigned int Continuous_Data_Length; unsigned int slave_id = 1; int _tmain(int argc, _TCHAR* argv[]) { unsigned char slave_id_hi, slave_id_lo; slave_id_hi = (slave_id & 0xFF00) >> 0x08; slave_id_lo = (slave_id & 0x00FF); Continuous_Data_Buffer[0] = 0xFF; // start of message --> 0xCCCC Continuous_Data_Buffer[1] = 0xFE; Continuous_Data_Buffer[2] = slave_id_hi; // Slave Add HB Continuous_Data_Buffer[3] = slave_id_lo; // Slave Add LB Continuous_Data_Buffer[4] = 0x10; // main msg command Continuous_Data_Buffer[5] = 0x00; // Register Adress Hi Continuous_Data_Buffer[6] = 0xFF; // Register Adress Lo for (buffer_index = 7; buffer_index<298; buffer_index++) { Continuous_Data_Buffer[buffer_index] = buffer_index; } Continuous_Data_Length = 298; for (i = 0; i<Continuous_Data_Length; i++) { uIndex = (uchCRCLo ^ Continuous_Data_Buffer[i]) & 0x00FF; uchCRCLo = (uchCRCHi ^ auchCRCHi[uIndex]) & 0x00FF; uchCRCHi = (auchCRCLo[uIndex]) & 0x00FF; } Continuous_Data_Buffer[298] = uchCRCHi; Continuous_Data_Buffer[299] = uchCRCLo; Continuous_Data_Length = 300; printf("CRC 1. »

decorator pattern

decorator pattern gibi adapter ve facade pattern’leri de var. bunlara nesne yonelimli programlama dilleri icin structural pattern’ler deniyor. buradaki kod suradan bulundu. code blocks’ta proje’lendirildi. Mevcut tasarım decorator pattern ile fazla oynamadan değişiklik yapmamıza olanak verir ve bu tasarım modeli genişlemeye uygun modifikasyona kapalı bir hal alır. Yapıyı oluşturmamız için tek başına inheritance yapısını kullanmamız yeterli olmayacaktır. Temelde elimizde bir nesne varken arka planda birden çok nesne olabilir ama uygulama tek nesne üzerinden işlem yapar. »

dosya isim degistirme

bir zamanlar kullandigim mp3 calarimin shuffle ozelligi yoktu. shuffle yapmak icin bir program kullaniyordum. o program da mp3 dosyalarin isimlerinin onune {123} gibi eklemeler yapiyordu. bu program bu isimleri temizlemek icin yazildi (galiba). dil: c // ################################################################## // author : yasin tasan // date : 12.3.2012 // brief : bir dizin icindeki dosyalarin adlarinin // editlenip baska bir dosyaya kaydedilmesi // // dizin icindeki dosyalarin adlari asagidaki gibi: // {123}ornek1.mp3 // {23}ornek2. »

dosyadan veri cekme

dil : c // ########################################################### // author : yasin tasan // date : 20.3.2012 // brief : flicker testlerinin sonuc dosyalarindan istenilen // bolgeden data almak için yazildi. // su anki hali sadece Pinst için dogru calisir. // Pst ve Psl sonuclari için duzeltilmesi gerekir. // ########################################################### #include <stdio.h> #include <stdlib.h> int main() { FILE *read_file_pointer; FILE *write_file_pointer; char SIZE = 100; // okunan satirlarin tutuldugu array size'i char read_file_name[] = "test_log_converted_2010_1. »

facade pattern

facade pattern gibi adapter ve decorator pattern’leri de var. bunlara nesne yonelimli programlama dilleri icin structural pattern’ler deniyor. facade class’lari kendi hiyerarsisindeki diger class’larin kullanilmasina, gruplanarak toplu halde onlarla is yapilmasina yariyor. benim yazdigim kod (code blocks projesi) facade.rar buldugum baska bir kod (visual studio projesi) FacadeSample.rar kaynak asagidaki kod da buradan static class Program { static void Main() { Facade facade = new Facade(); facade.PerformAction(); } } public class Facade { public void PerformAction() { var c1a = new Class1A(); var c1b = new Class1B(); var c2a = new Class2A(); var c2b = new Class2B(); var result1a = c1a. »