2006-01-01から1年間の記事一覧

JOYPAD計算

//////// スティック左 0 > X > -32768 1/7 = 4681 if(m_blInput.GetJoystickAxisData( BLINP_Y_ABS, 0 ) if*1{ m_message = "1"; } }else{ if= (28087))){ m_message = "7"; }else if((m_blInput.GetJoystickAxisData( BLINP_Y_ABS, 0 ) >= (23406))){ m_me…

メイン画面

何度目か分からないメイン画面 イェイ

ビークルのプログラムの環境構築

PC側のプログラムはC++のMFCを使うことで決定. 詳しいやつが近くにいたから教わりながら構築.趣味でゲーム作ってたから問題はない.しかし,マイコンの開発環境の構築に詰まってしまった.ただ,プログラムをマイコンにやけばいいだけじゃなくて,TRONやTINETも導…

操作画面1 長い操作画面の変更の歴史のイチページ

この日は,情報化の華となる操作画面のイメージ図を考えていた.去年のやつや,ほかの班をみてもVBっぽい画面が大半を占めると思う.今年は機能としては,昨年度に劣るため今年は人目に出る部分,ほかの人が見ても直ぐ評価してくれる部分に力を入れてみた.…

pwm5

#include #include"kernel_id.h" #include"main.h" #include #include

コントローラコマンド

この日はJOYPADのコントローラのコマンドについて話し合った.今思えば結局ちょくぜんまできまらなかったなー

このときのおもひで

ビークルの操作はJOYPADを使うことを決定した. 通信も去年と同様のものを使用するが勉強として,JOYPADの仕様プログラムと通信のテストプログラムを作ることにした. そのあとに,JOYPADの命令を通信で送ってXYステージを動かす実験を行った. マイコンの勉強も同…

今週の成果

・TCP/IPでの通信 送信PC(メインPCと想定)と受信PC(マイコンと想定)を用意し,受信PCとシーケンサを繋げ、送信PCから命令を送り受信PCで命令を受け取り、受け取った命令をXYステージに送ることでXYステージの制御に成功した.次の課題としては、送信PCと…

accptの待機状態

TCP/IP通信でacceptまちでプログラムが待機してしまう状態だったのだが.MFCのすれっどを使うことで回避メニュー項目も追加

ジョイパッド 不具合

十字キーの上がプログラムを開始に一番最初に反応してしまう・・・ なぜか,ウィンドウを非アクティブにしたときも上のキーが押されてしまう.そこでFLAGで無理やり解決しました

⑤サンプルプログラム(BlueInput.h)

#pragma once#include // マウスの左ボタン定数 const int BLINP_LBUTTON = 0x01; // マウスの右ボタン定数 const int BLINP_RBUTTON = 0x02; // マウスの中ボタン定数 const int BLINP_MBUTTON = 0x04; // マウスのX軸定数 const int BLINP_X = 0; // マウ…

④サンプルプログラム(BlueInput.cpp)

#include "StdAfx.h" #include "BlueInput.h" #include #include #pragma comment ( lib, "dinput8.lib" ) #pragma comment ( lib, "dxguid.lib" )// 実験用 LPDIRECTINPUTEFFECT g_pDIEffect[MAX_JOYSTICK];CBlInput::CBlInput( void ) { m_pDInput = NULL;…

③サンプルプログラム(main.cpp)

#include #include #include #include "BlueInput.h" //追加 #include #include #include #include // MFC のソケット拡張機能#include // 数学関数用ヘッダファイル #include // DirectShow用ヘッダファイル #include // DirectSound用ヘッダファイルclass …

②プログラムについて

DirectInputでJOYPADの情報は手にいれることができるらしい. サンプルコードやサンプルプログラムも沢山ネットに公開されているのだが,難しい.(ゲームを作ろうと思った人でJYOPADを動かそうっておもって挫折した人も多そう)以下の三つのファイルをコピ…

①環境構築

最初から躓いたところは環境構築である,昨年度の先輩方もジョイパッドを使ってビークルを操作していたのだが,詳しい資料がない.C++.netでジョイパッドのイベントを検出する際にDirectXSDKを使うのだが,先輩方はDirectX9.0SDKとしか書いていなかった.Mic…

はじめに

JOYパットでビークルを操作したいと考えているので,JYOパット(コントローラ)のボタンを押して,イベントを発生させ,メッセージを出すという簡単なプログラムを作った.

⑩参考URL

Visual C++講座 http://www-kobayashi.ctrl.titech.ac.jp/~mtanaka/vc/A/3-i.html シリアル通信(RS-232C)を制御する http://www.winapi-database.com/Network/RS-232C/RS232C.html 0N0の電脳壁新聞 http://0n0.fc2web.com/bcc/index.html

⑧注意

サンプルプログラムも適当なので信用しすぎないこと! もし,どうやっても動かないときはケーブルを確認する.

⑦サンプルプログラム(クライアント側)

#include #include int main() { HANDLE hComm; DWORD size; int test; hComm = CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ); DCB dcb; //XYステージ パリティはノンパリティ ストップBITは1 GetC…

⑥サンプルプログラム(サーバ側)

#include #include #include using namespace std;int main() { HANDLE hComm; char buff[16]; DWORD size; COMMTIMEOUTS ctmo; DWORD dwErrors; /* エラー情報 */ COMSTAT ComStat; /* デバイスの状態 */ DWORD dwCount; /* 受信データのバイト数 */ char* …

⑤データを受信する

シリアルポートの状態はこの構造体に保存される DWORD dwErrors; /* COM1エラー情報 */ COMSTAT ComStat; /* COM1デバイスの状態 */ DWORD dwCount; /* COM1受信データのバイト数 */ char* pszBuf; /* COM1読み出しデータバッファ */ DWORD dwRead; /* COM1…

④データを送信する.

WriteFile(hComm, "M:2-P5000\r", strlen("M:2-P1000\r"), &size, NULL); hComm:書き込みをするシリアルポートのハンドルを指定します。CreateFileの戻り値を使います。 "M:2-P5000\r":書き込みデータが格納された変数へのポインタを渡します。 strlen("M:…

③シリアルポートのオープン成功か判断する

if( hComm == INVALID_HANDLE_VALUE ) printf("関数失敗");

②シリアルポートの設定

DCB dcb; //XYステージ パリティはノンパリティ ストップBITは1 GetCommState(hComm,&dcb); dcb.BaudRate=9600; dcb.ByteSize=8; dcb.Parity=NOPARITY; dcb.fParity=TRUE; dcb.StopBits=ONESTOPBIT; SetCommState(hComm, &dcb); /* DCB を設定 */ dbc.BaudR…

①シリアルポートを開く

//COMポート番号以外下のプログラムを移しても問題ない. HANDLE hComm; hComm = CreateFile( "COM3", //COMポート番号を入れる GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );

シリアル通信はクロスケーブルで.

シリアル通信までの流れ

TCPサーバ サンプルプログラム

#include #include #include int main() { // 何回もクライアントと接続できるサーバ例(エラー処理付) WSADATA wsaData; SOCKET sock0; struct sockaddr_in addr; struct sockaddr_in client; int len; SOCKET sock; int n; BOOL yes = 1; char c; c = '0'…

ソケットを閉じる(closesocket)

closesocket関数は通信を切断してソケットを閉じる関数です。この関数は、 int closesocket(SOCKET s); のように定義されていて、成功すれば0を返します。失敗すると、SOCKET_ERRORが返ります。

接続を確立する(accept)

accept関数は接続待ちのリクエストを一つ取り出し、接続を確立する関数です。接続を確立すると、新しいソケットが作成されます。クライアントと通信は、その新しいソケットを使って行います。 accept関数の定義 accept関数は次のように定義されています。 SO…

リクエストの受信待機(listen)

listen関数の定義 listen関数の定義は次のようになっています。 int listen(SOCKET s,int backlog); s ソケット backlog 待機状態のリクエストが格納されるキューの大きさ 戻り値 成功の場合は0。失敗の場合はSOCKET_ERROR。