nrf 51822 Bluetoothタッチスクリーン駆動概要

1668 ワード

ボスと一绪に起业してしばらく経ちました.以前はandroid携帯cameraの駆动とデバッグをしていました.この时间は基本的に何でもしていました.Bluetooth 4.0モジュール、android app、携帯电话sensorをしてゲーム场を720度実现しました.appの反コンパイルを勉强して、smali言语を理解しました.この間よくまとめるつもりです.まず、私が書いたBluetoothタッチパネルに関する知識をまとめます.
Bluetoothタッチパネルと通常のタッチパネルの違いはありませんが、すべてのタッチパネルを書く流れは基本的に以下の手順です.
1.登録中断
2.割り込みに入り、高度なポイントのシステムは割り込みの低いステップを持つことができる.
3.割り込み後半でレジスタ中の情報を読み出し、id,x,y座標を解読し、押下または緩みであるか否か
4.id、座標情報を報告する
最も簡単なタッチスクリーンイベントは、いくつかの点を報告する必要があります.
1.finger_id(0x2f)mt_id,mtプロトコルで指を一意に示すid番号
2.id(0 x 39)動的に割り当てられたid番号
3.x(0 x 35)、y(0 x 36)号
4.タッチキーイベント(押したり放したり)
5,sync同期
最も簡単なエスカレーションイベント(エスカレーション座標点500)
0x3, 0x2f,finger_id
0x3, 0x39,id
0x3, 0x35,x 0x3, 0x36,y
0 x 1,0 x 14 a、(1を押して、0を放します)
0x0,0x0,0x0
そして、すべての指が緩んだときに0 x 39、すなわち動的idが-1であることを報告する必要がある.
0x3, 0x2f,finger_id
0x3, 0x39,-1
0 x 1,0 x 14 a、(すべての指が緩んだときに0を報告する)
0x0,0x0,0x0
以下は私が書いたスキャンの2つの指です.
	for (i = 0; i < ts_event->touch_point; i++)
	{
		add_td(0x3, 0x2f,ts_event->au8_finger_id[i]);
		if(ts_event->au8_touch_event[i] == 0||ts_event->au8_touch_event[i]==2){
			int16_t id = get_id(ts_event->au8_finger_id[i]);
			if(id == 0){
				id = input_mt_new_trkid();
				set_id(ts_event->au8_finger_id[i],id);
			}
			add_td(0x3, 0x39,id);
			add_td(0x3, 0x35,ts_event->au16_x[i]);
			add_td(0x3, 0x36,ts_event->au16_y[i]);
			touch_num++;
		}else{
			add_td(0x3, 0x39,0xFFFF);
			set_id(ts_event->au8_finger_id[i],0);;
		}
	}

	add_td(0x1, 0x14a,touch_num>0);
	add_td(0x0, 0x0,0x0);

2本の指をスキャンして事件を報告し、Bluetoothモジュールを通じて送信された携帯電話の端をスキャンし、具体的な送信プロセスは次回にしましょう.