コード例 #1
0
// 1行毎にLEDの情報を送信
bool sendImage(serial_port& port)
{
    char P[2] = "P";
    for(int i = 0; i < NUM_LED; i++){
        port.write_some(buffer(P)); //P信号を送信
        
        char dev[3] = "\0\0"; //デバイスの番号, 行数を受け取る
        if(0 < port.read_some(buffer(dev))){
            int dev_num = atoi(dev);
            printf("dev number[%d] : %s\n", dev_num, dev);
            
            //P信号を送信
            port.write_some(buffer(P));
            
            dev[0] = dev[1] = '\0';
            if(0 < port.read_some(buffer(dev))){
                int dev_row = atoi(dev);
                printf("dev row[%d] : %s\n", dev_row, dev);
                
                port.write_some(buffer(P)); //P信号を送信
                makeLedArray(dev_row, 0);
                port.write_some(buffer(led_array));
                printLedArray();
                
                char C[2] = "\0";
                if(0 < port.read_some(buffer(C)) && 'C' == C[0]){
                    //printf("\tC received : %s\n", C);
                    port.write_some(buffer(P)); //P信号を送信
                    makeLedArray(dev_row, 1);
                    port.write_some(buffer(led_array));
                    printLedArray();
                }
            }
        }
    }
    
    //終了信号(F)を待って終了
    char dev[2] = "\0";
    while(1){
        if(0 < port.read_some(buffer(dev)) && 'F' == dev[0]){
            return true;
        }
    }
    
}
コード例 #2
0
// S信号,R信号によるハンドシェーク
bool succeedS_R(serial_port& port)
{
    //Sは'S'
    char S[2] = "S";
    if(0 < port.write_some(buffer(S))){
        printf("S sent successfully\n");
        char R[2] = "0";
        //Rを受信して,かつ'R'だったら
        if(0 < port.read_some(buffer(R)) && 'R' == R[0]){
            return true;
        }
    }
    return false;
}