« プログラマーじゃない自分向けの備忘録 No.002 "下位1バイト" | トップページ | KBT-1 の動作が怪しい。 »

2013/04/19

【Visual C#】 シリアルサーボを動かす

□RCB-4HVにサーボを動かす命令を出す

 ということで今回はC#のプログラミングです。
 Processingじゃないの?という話もあるんですが、RCB-4自体が初めてなのでまずは先人のブログなどを参考に作成しようと思います。
 Processingはおいおい・・・

 利用しているのはVisual C# 2010です。


▼とりあえずこんな感じのプログラム

Dp002_2



▼serialPortの設定

Dp003



▼numericUpDownの設定

Dp004



◇ソースコード
  
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private byte[] myData;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                serialPort1.Open();             //COMポートを開く
            }
            catch
            {
                MessageBox.Show("COMが開けません!!");
                serialPort1.Close();
                this.Close();
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            serialPort1.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //ホームポジションボタンが押された時のイベント
            int p = 7500;

            position(p);
            trackBar1.Value = p;//trackBarをホームポジションに戻す
             
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            //トラックバーが操作された時のイベント
            int p = trackBar1.Value;

            position(p);

        }

        void position(int p)
        {
            //入力されたサーボの値をRCB-4に送信するメソッド

            int sum = 0;//チェックサム用変数
            int a = p >> 8;   //8bit右にシフト
            int b = p & 255;  //下位8bit以外を0にする
            int icsv = (int)numericUpDown1.Value; //ICS番号を取得

            icsv = icsv << 1;

            myData = new byte[7];
            myData[0] = 7;  //サイズ コマンド全体のバイト数=7
            myData[1] = 15; //コマンド 0Fh
            myData[2] = Convert.ToByte(icsv);  //ICS番号
            myData[3] = 1; //動作速度
            myData[4] = Convert.ToByte(b); //ポジション
            myData[5] = Convert.ToByte(a); //ポジション

            for (int i = 0; i < 6; i++)
            {
                sum = sum + myData[i];
            }

            sum = sum & 255;

            myData[6] = Convert.ToByte(sum);//チェックサム
            serialPort1.Write(myData, 0, 7);//配列の0番目から7個送信

            label2.Text = trackBar1.Value.ToString();
            label3.Text = a.ToString();
            label4.Text = b.ToString();
            label5.Text = icsv.ToString();
        }

    }
}

|

« プログラマーじゃない自分向けの備忘録 No.002 "下位1バイト" | トップページ | KBT-1 の動作が怪しい。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 【Visual C#】 シリアルサーボを動かす:

« プログラマーじゃない自分向けの備忘録 No.002 "下位1バイト" | トップページ | KBT-1 の動作が怪しい。 »