Ctp驱动的移植修改 v1.0
- 格式:pdf
- 大小:287.99 KB
- 文档页数:8
ProNet 伺服驱动器ESTUNCANopen 使用手册修订记录日期修订版本描述作者初稿完成移振华增加第8章移振华1、第3,3,1章“PDO 参数”,修正PDO 默认表格中的COB-ID 和default 值;易健2、增加第9章“通讯例程”——目录——1、概述............................................................................................................................................ . (5)1.1 CAN 主要相关文档 (5)1.2 本手册使用的术语和缩语 (5)1.3 CAN OPEN 概述 (6)2、接线和连接 (7)3、CANOPEN 通讯 (8)3.1 CAN 标识符分配表 (9)3.2 服务数据对象SDO (10)3.3 过程数据对象PDO (12)3.3.1 PDO参数 (14)3.4 SYNC 报文 (20)3.5 E MERGENCY 报文 (21)3.6 HEARTBEAT 报文 (23)3.7网络管理(NMT ) (24)4、单位换算单元(FACTOR GROUP) (26)4.1 单位换算相关参数 (27)4.1.1 position factor (27)4.1.2 velocity factor (29)4.1.3 acceleration factor (30)5、位置控制功能 (31)5.1 位置控制相关参数 (33)6、设备控制 (35)6.1 控制状态机 (35)6.2 设备控制相关参数 (36)6.2.1 controlword (37)6.2.2 statusword (38)6.2.3shutdown_option_code (3)96.2.4disable_operation_option_code (40)6.2.5quick_stop_option_code (4)6.2.6halt_option_code (41)6.2.7fault_reaction_option_code (41)7、控制模式 (42)7.1 控制模式相关参数 (42)7.1.1modes_of_operation (42)7.1.2modes_of_operation_display (43)7.2 回零模式(HOMINGMODE ) (44)7.2.1 回零模式的控制字 (44)7.2.2 回零模式的状态字 (44)7.2.3 回零模式相关参数 (45)7.2.4 回零方法 (47)7.3 速度控制模式(PROFILE VELOCITYMODE ) (49)7.3.1速度模式的控制字 (49)7.3.2 速度模式的状态字 (49)7.3.3 速度控制模式相关参数 (49)7.4 位置控制模式(PROFILE POSITIONMODE ) (53)7.4.1 位置模式的控制字 (53)7.4.2 位置模式的状态字 (53)7.4.3 位置控制相关参数 (54)7.4.4 功能描述 (56)8、CAN 通讯相关参数 (58)9、CANOPEN 通讯例程 (59)9.1 SDO 操作; (59)9.2 PDO 配置 (59)9.3 位置控制例子(P ROFILE P OSITON MODE ) (60)9.4 位置插补控制(I NTERPLATE P OSITION MODE ) (61)9.5 速度控制(P ROFILE V ELOCITY MODE ) (62)9.6 回零 (6)2对象字典表 (64)1、概述1.1 CAN 主要相关文档 CiA DS 301 V 4.01: CiA CANopen Communication Profilefor Industrial Systems - based on CALCiA DSP 402 V 2.0: CiA CANopen Device Profile1.2 本手册使用的术语和缩语CANCiACOBEDSLMTNMTOD参数PDORORWSDO控制器局域网在自动化国际用户和制造商协会中的 CAN。
操作技巧:CTP系统作业标准化管理(一)四川省印刷制版中心有限公司领导创新观念,创新技术,最近引进柯达全胜800Ⅲ热敏型计算机直接制版机及印能捷数字化工作流程,采用国际顶尖的柯达视方佳调频加网技术,结合柯达方形光点热敏成像技术,进行高品质印刷,创建公司产品的特色和亮点,以特色来增加产品的附加值,以亮点来吸引客户,力争在蓝海市场双桨遨游。
该公司领导充分认识到引进先进的CTP系统,只是企业提升自我的外因条件,如何对CTP系统实施标准化管理?如何规范前端的文件?如何应用调频网与印刷工艺结合?是企业提升自我的内因,外因通过内因起作用,才能发挥CTP系统的先进性。
因此,公司领导从一开始引进CTP系统就设计以CTP及其数字化工作流程来整合生产系统,建立具有本企业特色的技术体系和质量管理体系。
该公司对CTP系统作业的标准化管理做得很细,执行得很严,从而保证CTP系统高效率、高质量的动作。
下面作简要介绍。
A印能捷EVO之DTP简易流程,如图:图1ACTP操作标准化、规范化管理CTP全胜800Ⅲ热敏型计算机直接制版机操作的标准化、规范化、数据化管理,是保证系统流程准确,调整运转和高质、高效的重要保证。
因此,必须精心实施标准化、规范化、数据化管理。
一、CTP系统的工艺流程设计如图:二、CTP全胜800Ⅲ制版机操作流程规范目的:规范CIP系统操作流程,保证系统流程准确,高效运转。
工作程序:1、文件的读取①光盘文件的复制。
光盘驱动器为H盘,打开光盘内容后,将所需制版的文件复制到CIP服务器指定子文件夹,为防止混淆,该子文件夹应为相应印件的专用文件夹。
②通过网卡接口进行文件复制将CIP服务器与有印件文件的电脑连接,打开“网上领居”,找到所需复制的文件,将文件复制到CIP服务器(名称为EVO,工作组为workgroup盘的指定子文件夹JobData.)③注意:CTP服务器仅接受以下文件格式:PDF;PostScript Levell,2and3;EPS(Encapsulated PostScript);DCS and DCS2(both single and multi-five versions);TIFF/IT-PI;Brisque CT/LW;256Tiff跟1位Tiff。
CTP常见的问题解决CTP, 问题解决1.尺寸问题(1)制作的文件尺寸与实际所需的尺寸不相符。
(2)制作文件时未考虑到所需的出血量。
(3)文字或图像距离成品裁切线太近。
解决方法:(1)将“文档设定”/“页面尺寸”定义为成品尺寸。
(2)制作文件时要考虑页面的出血量,一般为3mm。
(3)文字或图像距离成品裁切线至少为5mm,最好超过8mm。
2.图像问题(1)彩色图像或图形采用了RGB色彩模式。
(2)图像精度未达到印刷基本要求,如分辨力太低。
(3)以JPEG格式压缩的图像,层次,细节的信息丢失。
(4)电分或扫描后未修图,在图像上留下脏点。
(5)链接或重新置入图像时出错。
解决方法:(1)要求设计和制作人员对印刷常规知识有最基本的了解,并具备一定的美学常识。
(2)实现CTP系统的管理标准化。
流程规范化,并明确各工序的要求。
建议做法:(1)要对分色图像质量有最基本的要求。
(2)印刷时一般采用CMYK的色彩模式。
(3)图像要有足够的精度。
对于大图像,彩色图像的分辨力通常为300dpi或350dpi,Bitmap 图像的分辨力通常为1200dpi,至少为800dpi,以免产生锯齿。
(4)电分时设置要准确,文件要能忠实再现原稿,清晰度高,细节丰富,层次好。
(5)电分后做校色处理时要求修图,以免留下脏点。
(6)尽可能不要压缩图像,尤其是压缩为JPEG格式的图像不能用于印刷。
(7)规范文件命名,避免同名文件的出现。
重新链接图像时一定要小心,一旦出错就是致命的,所以不可掉以轻心,以免造成重大损失。
3.字体问题对于PS字库没有的字体,尤其是中文字体,一般采用Truetype字体下载,但容易产生漏字或字的移位。
解决方法:(1)购买相应的PS字库或CID字库。
(2)为CTP系统安装常用的字库,并要求客户使用相应字库的字体。
(3)对于缺少的字体,可以与客户商量用近似的字体代替,但要注意字的移位;也可以要求客户提供字体,尤其是外文。
【转】MTKTP驱动移植对于MTK TP驱动移植⼀般分为六部分:1、硬件IO⼝配置;2、TP驱动移植;3、I2C通信;4、中断触发;5、数据上报;6、虚拟按键;硬件电路:1、GPIO配置打开 mediatek\dct\DrvGen.exe选择 mediatek\custom\xiaoxi\kernel\dct\dct\codegen.dws 配置⽂件配置EINT7_CTP引脚、CTP_RST复位引脚2、TP驱动移植(以ft5x16为例)在\mediatek\custom\common\kernel\touchpanel⽬录下创建ft5x16,将供应商提供的驱动驱动资料拷贝到该⽬录下;修改配置⽂件:mediatek\config\prj\ProjectConfig.mk下的CUSTOM_KERNEL_TOUCHPANEL其值由改为ft5x16,表明对应ft5x16⼦⽬录;打开ft5x16.c⽂件,修改⼀下:1static struct i2c_board_info __initdata ft5x16_i2c_tpd={ I2C_BOARD_INFO("ft5x16", (0x70>>1))}; //"ft5x16"为设备名,设备地址为⾼7位23static struct tpd_driver_t tpd_device_driver = {4 .tpd_device_name = "FT5x16",5 .tpd_local_init = tpd_local_init,6 .suspend = tpd_suspend,7 .resume = tpd_resume,8 #ifdef TPD_HAVE_BUTTON9 .tpd_have_button = 1,10#else11 .tpd_have_button = 0,12#endif13 };1415/* called when loaded into kernel */16static int __init tpd_driver_init(void) {17 printk("MediaTek FT5x16 touch panel driver init\n");18/* 注册板级设备信息 */19 i2c_register_board_info(IIC_PORT, &ft5x16_i2c_tpd, 1); //IIC_PORT表⽰i2c控制器号,由电路原理图可知TP设备连接到i2c控制器0,ft5x16_i2c_tpd为i2c设备结构,1表⽰该i2c_board_info个数20if(tpd_driver_add(&tpd_device_driver) < 0)21 printk("add FT5x16 driver failed\n");22return0;23 }重新编译:./mk n k && ./mk bootimage3、I2C通信新驱动编译进内核,启动内核后,我们怎样验证i2c接⼝能够正常通信呢?系统启动后通过串⼝或adb shell进⼊系统命令⾏窗⼝,查询/sys/bus/i2c/devices⽬录下是否有0-0038信息,查询/sys/bus/i2c/drivers⽬录下是否存在‘ft5x16’设备名;先保证i2c能够正常通信;4、中断触发中断注册函数:mt_eint_registration(CUST_EINT_TOUCH_PANEL_NUM, CUST_EINT_TOUCH_PANEL_TYPE, tpd_eint_interrupt_handler, 1);//tpd_eint_interrupt_handler函数为中断回调函数5、数据上报当触摸屏产⽣中断的时候就会调⽤到该接⼝;然后在中断处理函数中唤醒运⾏在⼦线程中的等待队列,再通过⼦线程获取TP数据并上报到系统;1static DECLARE_WAIT_QUEUE_HEAD(waiter); //初始化等待队列23 thread = kthread_run(touch_event_handler, 0, TPD_DEVICE); //新建线程45static int touch_event_handler(void *unused)6 {7 ......8do9 {10 mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM);11 set_current_state(TASK_INTERRUPTIBLE);12 wait_event_interruptible(waiter,tpd_flag!=0); //等待队列进⼊休眠,等待唤醒13 tpd_flag = 0;14 set_current_state(TASK_RUNNING);15 ......16if (tpd_touchinfo(&cinfo, &pinfo)) //获取TP数据17 {18//TPD_DEBUG("point_num = %d\n",point_num);19 TPD_DEBUG_SET_TIME;20if(point_num >0)21 {22for(i =0; i<point_num; i++)//only support 3 point23 {24 cinfo.x[i] = cinfo.x[i];25 cinfo.y[i] = cinfo.y[i];2627 tpd_down(cinfo.x[i], cinfo.y[i], cinfo.id[i]); //上报按下数据28 printk(KERN_DEBUG"----calibration----- X:%4d, Y:%4d, P:%4d \n", cinfo.x[i], cinfo.y[i], cinfo.id[i]);29 }30 input_sync(tpd->dev);31 }32else33 {34 tpd_up(cinfo.x[0], cinfo.y[0]); //上报弹起数据35//TPD_DEBUG("release --->\n");36//input_mt_sync(tpd->dev);37 input_sync(tpd->dev);38 }39 }40 ......4142 }while(!kthread_should_stop());4344return0;45 }TP数据可以通过打印的⽅式进⾏查看,也可以激活‘系统设置’中‘开发者选项’的‘指针位置’,现在触摸操作在LCD的轨迹,也可以在packages\apps\Launcher2\src\com\android\launcher2\Launcher.java的onCreate⽅法最后添加Settings.System.putInt(this.getContentResolver(),Settings.System.POINTER_LOCATION, 1); 在Launcher中开启‘指针位置’功能(需要mm Launcher模块并重新打包和烧录system.img⽂件);注:如果TP获取到的数据⽐较乱的时候建议通过打开‘指针位置’功能进⾏查看,排除TP固件分辨与LCD没对应等问题;6、虚拟按键1static struct tpd_driver_t tpd_device_driver = {2 .tpd_device_name = "FT5x16",3 .tpd_local_init = tpd_local_init,4 .suspend = tpd_suspend,5 .resume = tpd_resume,6 #ifdef TPD_HAVE_BUTTON7 .tpd_have_button = 1,8#else9 .tpd_have_button = 0,10#endif11 };从tpd_driver_t结构可知tpd_have_button成员为虚拟按键标志位;由宏TPD_HAVA_BUTTON开关决定的,宏定义在tpd_custom_fts.h中;在tpd_custom_fts.h中定义了⼀系列关于虚拟按键的宏:#define TPD_HAVE_BUTTON //虚拟按键开关#define TPD_BUTTON_WIDTH (200) //按键宽度#define TPD_BUTTON_HEIGH (100) //按键⾼度#define TPD_KEY_COUNT 3 //按键个数#define TPD_KEYS {KEY_MENU, KEY_HOMEPAGE, KEY_BACK} //按键对应的功能#define TPD_KEYS_DIM {{80,900,TPD_BUTTON_WIDTH,TPD_BUTTON_HEIGH}, {240,900,TPD_BUTTON_WIDTH,TPD_BUTTON_HEIGH}, {400,900,TPD_BUTTON_WIDTH,TPD_BUTTON_HEIGH}} //按键对应位置TPD_KEYS_DIM中的坐标是该按键区域的中⼼点:TP驱动简要分析1static struct tpd_driver_t tpd_device_driver = {2 .tpd_device_name = FT5x16,3 .tpd_local_init = tpd_local_init, //初始化函数4 .suspend = tpd_suspend,5 .resume = tpd_resume,6 #ifdef TPD_HAVE_BUTTON7 .tpd_have_button = 1,8#else9 .tpd_have_button = 0,10#endif11 };1213/* called when loaded into kernel */14static int __init tpd_driver_init(void) {15 printk("MediaTek FT5x16 touch panel driver init\n");16 i2c_register_board_info(0, &ft5x16_i2c_tpd, 1); //注册板级设备信息17if(tpd_driver_add(&tpd_device_driver) < 0) //添加驱动18 printk("add FT5x16 driver failed\n");19return0;20 }MTK⾃⼰编写了⼀套TP框架,通过该框架管理TP设备,tpd_driver_add为框架的接⼝之⼀;系统通过tpd_driver_add添加驱动后会回调tpd_local_init函数;1 #ifdef TPD_HAVE_BUTTON2static int tpd_keys_local[TPD_KEY_COUNT] = TPD_KEYS; //存放按键功能信息3static int tpd_keys_dim_local[TPD_KEY_COUNT][4] = TPD_KEYS_DIM; //存放虚拟按键信息4#endif56static int tpd_local_init(void)7 {8 TPD_DMESG("FTS I2C Touchscreen Driver (Built %s @ %s)\n", __DATE__, __TIME__);910if(i2c_add_driver(&tpd_i2c_driver)!=0) //注册i2c驱动11 {12 TPD_DMESG("FTS unable to add i2c driver.\n");13return -1;14 }15if(tpd_load_status == 0)16 {17 TPD_DMESG("FTS add error touch panel driver.\n");18 i2c_del_driver(&tpd_i2c_driver);19return -1;20 }2122 #ifdef TPD_HAVE_BUTTON //如果定义虚拟按键,则初始化按键信息23 tpd_button_setting(TPD_KEY_COUNT, tpd_keys_local, tpd_keys_dim_local);// initialize tpd button data24#endif2526#if (defined(TPD_WARP_START) && defined(TPD_WARP_END))27 TPD_DO_WARP = 1;28 memcpy(tpd_wb_start, tpd_wb_start_local, TPD_WARP_CNT*4);29 memcpy(tpd_wb_end, tpd_wb_start_local, TPD_WARP_CNT*4);30#endif3132#if (defined(TPD_HAVE_CALIBRATION) && !defined(TPD_CUSTOM_CALIBRATION))33 memcpy(tpd_calmat, tpd_def_calmat_local, 8*4);34 memcpy(tpd_def_calmat, tpd_def_calmat_local, 8*4);35#endif36 TPD_DMESG("end %s, %d\n", __FUNCTION__, __LINE__);37 tpd_type_cap = 1;38return0;39 }向系统注册i2c驱动后,如果找到对应的设备就会调⽤tpd_probe函数;1static const struct i2c_device_id ft5x16_tpd_id[] = {{TPD_NAME,0},{}};23static struct i2c_driver tpd_i2c_driver = {4 .driver = {5 .name = TPD_NAME,6 },7 .probe = tpd_prob,8 .remove = __devexit_p(tpd_remove),9 .id_table = ft5x16_tpd_id,10 .detect = tpd_detect,11 };1213static int __devinit tpd_probe(struct i2c_client *client, const struct i2c_device_id *id)14 {15int retval = TPD_OK;16char data;17 u8 report_rate=0;18int err=0;19int reset_count = 0;20 u8 chip_id,i;2122 reset_proc:23 i2c_client = client;24 #ifdef MAIERXUN_TP_COM25if(touchpanel_flag){26return0;27 }28#endif29//复位30//power on, need confirm with SA31 mt_set_gpio_mode(GPIO_CTP_RST_PIN, GPIO_CTP_RST_PIN_M_GPIO);32 mt_set_gpio_dir(GPIO_CTP_RST_PIN, GPIO_DIR_OUT);33 mt_set_gpio_out(GPIO_CTP_RST_PIN, GPIO_OUT_ZERO);34 msleep(5);35 TPD_DMESG(" fts ic reset\n");3637//打开TP电源38 #ifdef TPD_POWER_SOURCE_CUSTOM39 hwPowerOn(TPD_POWER_SOURCE_CUSTOM, VOL_3300, "TP");40#else41 hwPowerOn(MT65XX_POWER_LDO_VGP2, VOL_3300, "TP");42#endif4344 mt_set_gpio_mode(GPIO_CTP_RST_PIN, GPIO_CTP_RST_PIN_M_GPIO);45 mt_set_gpio_dir(GPIO_CTP_RST_PIN, GPIO_DIR_OUT);46 mt_set_gpio_out(GPIO_CTP_RST_PIN, GPIO_OUT_ONE);4748 #ifdef TPD_CLOSE_POWER_IN_SLEEP49 hwPowerDown(TPD_POWER_SOURCE,"TP");50 hwPowerOn(TPD_POWER_SOURCE,VOL_3300,"TP");51 msleep(100);5253#else /* 结束复位 */54 mt_set_gpio_mode(GPIO_CTP_RST_PIN, GPIO_CTP_RST_PIN_M_GPIO);55 mt_set_gpio_dir(GPIO_CTP_RST_PIN, GPIO_DIR_OUT);56 mt_set_gpio_out(GPIO_CTP_RST_PIN, GPIO_OUT_ZERO);57 msleep(5);58 TPD_DMESG(" fts ic reset\n");59 mt_set_gpio_mode(GPIO_CTP_RST_PIN, GPIO_CTP_RST_PIN_M_GPIO);60 mt_set_gpio_dir(GPIO_CTP_RST_PIN, GPIO_DIR_OUT);61 mt_set_gpio_out(GPIO_CTP_RST_PIN, GPIO_OUT_ONE);62#endif6364/* 初始化中断引脚 */65 mt_set_gpio_mode(GPIO_CTP_EINT_PIN, GPIO_CTP_EINT_PIN_M_EINT);66 mt_set_gpio_dir(GPIO_CTP_EINT_PIN, GPIO_DIR_IN);67 mt_set_gpio_pull_enable(GPIO_CTP_EINT_PIN, GPIO_PULL_ENABLE);68 mt_set_gpio_pull_select(GPIO_CTP_EINT_PIN, GPIO_PULL_UP);6970/* 中断配置和注册 */71 mt_eint_set_hw_debounce(CUST_EINT_TOUCH_PANEL_NUM, CUST_EINT_TOUCH_PANEL_DEBOUNCE_CN);72 mt_eint_registration(CUST_EINT_TOUCH_PANEL_NUM, CUST_EINT_TOUCH_PANEL_TYPE, tpd_eint_interrupt_handler, 1); //注册中断处理函数,TP产⽣中断时就会回调tpd_eint_interrupt函数73 mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM);7475 msleep(400);7677 err=i2c_smbus_read_i2c_block_data(i2c_client, 0x00, 1, &data);7879 TPD_DMESG("gao_i2c:err %d,data:%d\n", err,data);80if(err< 0 || data!=0)// reg0 data running state is 0; other state is not 081 {82 TPD_DMESG("I2C transfer error, line: %d\n", __LINE__);83 #ifdef TPD_RESET_ISSUE_WORKAROUND84if ( reset_count < TPD_MAX_RESET_COUNT )85 {86 reset_count++;87goto reset_proc;88 }89#endif90//add at 20150330 by zhu91 #ifdef MAIERXUN_TP_COM92 touchpanel_flag=false;93#endif94return -1;95 }9697 ......9899 #ifdef VELOCITY_CUSTOM_FT5206100if((err = misc_register(&tpd_misc_device))) //注册混杂设备驱动101 {102 printk("mtk_tpd: tpd_misc_device register failed\n");103104 }105#endif106107 #ifdef TPD_AUTO_UPGRADE108 printk("********************Enter CTP Auto Upgrade********************\n");109 fts_ctpm_auto_upgrade(i2c_client);110#endif111 thread = kthread_run(touch_event_handler, 0, TPD_DEVICE); //创建⼦线程,通过该⼦线程获取和上报数据112if (IS_ERR(thread))113 {114 retval = PTR_ERR(thread);115 TPD_DMESG(TPD_DEVICE " failed to create kernel thread: %d\n", retval);116 }117118 TPD_DMESG("FTS Touch Panel Device Probe %s\n", (retval < TPD_OK) ? "FAIL" : "PASS");119120/* 初始化TP的P-sensor功能,暂不分析 */121 #ifdef TPD_PROXIMITY122struct hwmsen_object obj_ps;123124 obj_ps.polling = 0;//interrupt mode125 obj_ps.sensor_operate = tpd_ps_operate;126if((err = hwmsen_attach(ID_PROXIMITY, &obj_ps)))127 {128 APS_ERR("proxi_fts attach fail = %d\n", err);132 APS_ERR("proxi_fts attach ok = %d\n", err);133 }134#endif135136 #ifdef MAIERXUN_TP_COM137 touchpanel_flag=true;138#endif139140return0;141142 }/* 中断处理函数 */1static void tpd_eint_interrupt_handler(void)2 {3//TPD_DEBUG("TPD interrupt has been triggered\n");4 TPD_DEBUG_PRINT_INT;5 tpd_flag = 1;6 wake_up_interruptible(&waiter); //唤醒等待队列7 }中断处理遵循中断上下⽂的设计原则,使得中断⼦程序只是简单唤醒等待队列就可以了,没有多余的操作;/* ⼦线程处理函数 */1static int touch_event_handler(void *unused)2 {3struct touch_info cinfo, pinfo;4int i=0;56struct sched_param param = { .sched_priority = RTPM_PRIO_TPD };7 sched_setscheduler(current, SCHED_RR, ¶m);89 #ifdef TPD_PROXIMITY10int err;11 hwm_sensor_data sensor_data;12 u8 proximity_status;1314#endif15 u8 state;1617do//进⼊while循环进⾏睡眠-等待唤醒的操作18 {19 mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM); //中断使能(解除屏蔽)20 set_current_state(TASK_INTERRUPTIBLE);21 wait_event_interruptible(waiter,tpd_flag!=0); //进⼊睡眠等待唤醒2223 tpd_flag = 0;2425 set_current_state(TASK_RUNNING);26 ......2728 #ifdef TPD_PROXIMITY //TP的P-sensor功能,暂不分析29if (tpd_proximity_flag == 1)30 {31 i2c_smbus_read_i2c_block_data(i2c_client, 0xB0, 1, &state);32 TPD_PROXIMITY_DEBUG("proxi_5206 0xB0 state value is 1131 0x%02X\n", state);3334if(!(state&0x01))35 {36 tpd_enable_ps(1);37 }3839 i2c_smbus_read_i2c_block_data(i2c_client, 0x01, 1, &proximity_status);40 TPD_PROXIMITY_DEBUG("proxi_5206 0x01 value is 1139 0x%02X\n", proximity_status);4142if (proximity_status == 0xC0)43 {44 tpd_proximity_detect = 0;45 }46else if(proximity_status == 0xE0)47 {48 tpd_proximity_detect = 1;49 }5051 TPD_PROXIMITY_DEBUG("tpd_proximity_detect 1149 = %d\n", tpd_proximity_detect);5253if ((err = tpd_read_ps()))54 {55 TPD_PROXIMITY_DMESG("proxi_5206 read ps data 1156: %d\n", err);56 }57 sensor_data.values[0] = tpd_get_ps_value();58 sensor_data.value_divide = 1;59 sensor_data.status = SENSOR_STATUS_ACCURACY_MEDIUM;60if ((err = hwmsen_get_interrupt_data(ID_PROXIMITY, &sensor_data)))61 {62 TPD_PROXIMITY_DMESG(" proxi_5206 call hwmsen_get_interrupt_data failed= %d\n", err);6667if (tpd_touchinfo(&cinfo, &pinfo)) //获取TP设备数据,并把数据保存在cinfob buf中68 {69//TPD_DEBUG("point_num = %d\n",point_num);70 TPD_DEBUG_SET_TIME;71if(point_num >0)72 {73for(i =0; i<point_num; i++)//only support 3 point74 {75 printk(KERN_DEBUG"X:%4d, Y:%4d, P:%4d \n", cinfo.x[i], cinfo.y[i], cinfo.id[i]);7677 cinfo.x[i] = cinfo.x[i];78 cinfo.y[i] = cinfo.y[i];7980 tpd_down(cinfo.x[i], cinfo.y[i], cinfo.id[i]); //按下数据处理81 printk(KERN_DEBUG"----calibration----- X:%4d, Y:%4d, P:%4d \n", cinfo.x[i], cinfo.y[i], cinfo.id[i]);82 }83 input_sync(tpd->dev);84 }85else86 {87 tpd_up(cinfo.x[0], cinfo.y[0]); //弹起数据处理88//TPD_DEBUG("release --->\n");89//input_mt_sync(tpd->dev);90 input_sync(tpd->dev);91 }92 }93 ......9495 }while(!kthread_should_stop());9697return0;98 }/* 获取TP数据 */1static int tpd_touchinfo(struct touch_info *cinfo, struct touch_info *pinfo)2 {3int i = 0;4char data[128] = {0};5 u16 high_byte,low_byte,reg;6 u8 report_rate =0;78 p_point_num = point_num;9if (tpd_halt)10 {11 TPD_DMESG( "tpd_touchinfo return ..\n");12return false;13 }14 mutex_lock(&i2c_access);151617 reg = 0x00;18 fts_i2c_Read(i2c_client, ®, 1, data, 64); //获取TP数据,⼀些TP是⽀持多点触控的,所以有可能就产⽣多个触点的数据19 mutex_unlock(&i2c_access);2021/*get the number of the touch points*/22 point_num= data[2] & 0x0f;2324 TPD_DEBUG("point_num =%d\n",point_num);2526/* 根据芯⽚协议解析数据并存放在cinfo buf中 */27for(i = 0; i < point_num; i++)28 {29 cinfo->p[i] = data[3+6*i] >> 6; //event flag30 cinfo->id[i] = data[3+6*i+2]>>4; //touch id31/*get the X coordinate, 2 bytes*/32 high_byte = data[3+6*i];33 high_byte <<= 8;34 high_byte &= 0x0f00;35 low_byte = data[3+6*i + 1];36 cinfo->x[i] = high_byte |low_byte;373839/*get the Y coordinate, 2 bytes*/40 high_byte = data[3+6*i+2];41 high_byte <<= 8;42 high_byte &= 0x0f00;43 low_byte = data[3+6*i+3];44 cinfo->y[i] = high_byte |low_byte;45 }4647 }48 TPD_DEBUG(" cinfo->x[0] = %d, cinfo->y[0] = %d, cinfo->p[0] = %d\n", cinfo->x[0], cinfo->y[0], cinfo->p[0]);4950return true;51 }1static void tpd_down(int x, int y, int p) {2static int tpd_x = 0;3static int tpd_y = 0;45 tpd_x = x;6 tpd_y = y;78/* 通过输⼊⼦系统上报数据 */9 input_report_key(tpd->dev, BTN_TOUCH, 1);10 input_report_abs(tpd->dev, ABS_MT_TOUCH_MAJOR, 20);11 input_report_abs(tpd->dev, ABS_MT_POSITION_X, x);12 input_report_abs(tpd->dev, ABS_MT_POSITION_Y, y);1314 printk(KERN_ERR, "D[%4d %4d %4d] ", x, y, p);15/* track id Start 0 */16 input_report_abs(tpd->dev, ABS_MT_TRACKING_ID, p);17 input_mt_sync(tpd->dev);18 #ifndef MT657219if (FACTORY_BOOT == get_boot_mode()|| RECOVERY_BOOT == get_boot_mode())20#endif21 {22 tpd_button(x, y, 1); //虚拟按键的处理23 }24 TPD_EM_PRINT(x, y, x, y, p-1, 1);25 }2627static void tpd_up(int x, int y) {2829 input_report_key(tpd->dev, BTN_TOUCH, 0);30 input_mt_sync(tpd->dev);31 TPD_EM_PRINT(x, y, x, y, 0, 0);3233 #ifndef MT657234if (FACTORY_BOOT == get_boot_mode()|| RECOVERY_BOOT == get_boot_mode())35#endif36 {37 tpd_button(x, y, 0);38 }39 }/* 虚拟按键判断和处理函数 */1void tpd_button(unsigned int x, unsigned int y, unsigned int down) {2int i;3if(down) {4for(i=0;i<tpd_keycnt;i++)5 {6/* 判断数据是否落在虚拟按键的范围内,数据处理算法实现了以坐标点为中⼼的虚拟按键 */7if(x>=tpd_keys_dim[i][0]-(tpd_keys_dim[i][2]/2) &&8 x<=tpd_keys_dim[i][0]+(tpd_keys_dim[i][2]/2) &&9 y>=tpd_keys_dim[i][1]-(tpd_keys_dim[i][3]/2) &&10 y<=tpd_keys_dim[i][1]+(tpd_keys_dim[i][3]/2) &&11 !(tpd->btn_state&(1<<i)))12 {13 input_report_key(tpd->kpd, tpd_keys[i], 1); //上报按键14 input_sync(tpd->kpd);15 tpd->btn_state|=(1<<i);16 TPD_DEBUG("[mtk-tpd] press key %d (%d)\n",i, tpd_keys[i]);17 printk("[mtk-tpd] press key %d (%d)\n",i, tpd_keys[i]);18 }19 }20 } else {21for(i=0;i<tpd_keycnt;i++) {22if(tpd->btn_state&(1<<i)) {23 input_report_key(tpd->kpd, tpd_keys[i], 0);24 input_sync(tpd->kpd);25 TPD_DEBUG("[mtk-tpd] release key %d (%d)\n",i, tpd_keys[i]);26 printk("[mtk-tpd] release key %d (%d)\n",i, tpd_keys[i]);27 }28 }29 tpd->btn_state=0;30 }31 }32 tpd_keys_dim和tpd_keys的数据是通过tpd_button_setting初始化的,可以去看tpd_button_setting()的实现;通过简单分析,由此可知MTK的TP驱动的整体框架跟普通TP驱动框架也是⼤致差不多;。
生效日期: _______ 年月____________ 日文件编号~ ~版本/次号文件名称~ 入稿作业流程作业指导书项目负责人所使用的材料(一)适用范围CTP中心文件入稿流程(二)作业内容A. 稿件来后交CTP接单人员;B. 入稿时登记如下内容;1.工程单号印刷厂所开出的工程流水单(No:XXXXXX)2.客户名称将印刷厂所要求所有内容记录到CTP中心入稿记录表里;3.业务代表工程流水单内业务代表名称记录到CT冲心入稿记录表里;4.相关内容包括:印机型号,板材尺寸,咬口方向,咬口尺寸,送货时间等等;5.入稿日期接稿的日期:XXXX年XX月XX日;6.入稿时间接稿的时间:XX时XX分;C. 将工程单或工程单复印件、工作流程单、附表放入CTP作业流程纸袋里;D. 将工程单要求录入作业公告黑板里(工程单号、作业名称、下单日期、操作员、要求完工时间〔数码打样、蓝纸打样、CTP出版〕);E. 记录完成后交给相应的操作人员。
(一)适用范围适用于所有产品的拼版过程(二)作业内容A. 审单1. 操作人员细致阅读工单要求,检查样稿、文件是否要齐全,严格核对成品尺寸, 改版部位要标识清楚。
输出多套 CTP 版一定要检查每套版的情况是否一致,如 有疑问向主管或经办人查询,严禁把要求模糊的工程单承接下来; 2. 客户要求改版的部位,由拼版人员按样先把文件改好;3. 看清楚开版方式,如正反版 4+4C 、自反版4+4C 、单面4+0C 、咬口自反4+4C , 装订工序、印刷机台、切纸开版尺寸、成品尺寸及印刷说明、备注,方可按要 求制作模板; 4. 咬口标准定位(CTP 版边到咬口线XXcn ); B. 校对确认拼版1. 复核过程中,小的修改由拼版人员按要求直接修改后拼版,较大改动由拼版人文件编号 文件名称 拼版作业指导书项目负责人所使用的材料电脑、BrainNew Product生效日期: 年 月版本/次号日软件员按要求修改后重出蓝纸,交相关人员校对确认后客户签字才能出CTP版;CTP输出中心流程作业指导书C. 工艺要求1. 骑马钉要做成面短底长,锁线胶装要做成面长底短;2. 骑马钉、无线胶装、锁线胶装必须画折标,统一天头留位0.3cm (特殊除外);3. 骑马钉、无线胶装书每一手色块统一画在书头位上,距离书头成品2cm处为第一首色块,色块尺寸:1cmx 0.2cm,第二手顺延 ... ,依此类推;4. 锁线胶装每一手色块统一画在书脊位上距离书头2mm处为第一手色块,居中画色块尺寸5mm长x 0.5cm宽,第二手顺延.... ,依此类推;5. 锁线胶装书每一手第一页书脊位,距离书脚成品线1cm处,居中画色块2mm长x 0.5cm高,方便检查手数对齐情况;6. 五色或多色套印、反白字套印、多色套字拼在版尾,烫金/银字、击凸、过局部UV需要啤的拼在对面针位和咬口处,达到啤和套印准确;7. 在纸张尺寸允许的情况下,需要啤的产品咬口位不少于 1.3cm上自动啤机(特殊产品视成品尺寸大小另定),且注明对面针位;8. 封套、手挽袋、信封、盒子等粘位不过光油、哑油,保留3mm出血位后将多余去79. 印标准信封,要加“邮局印制”字样,手挽袋袋口一般定为咬口,并且留4.5cm的位置(特殊除外),且大边留粘位;10. 72 X 102cm小全开印刷,CP1、CP3 CP5号机要晒低咬口,基本留位以咬口方向PS版边到成品线留3.8cm,版尾到成品线留2.8cm为最低标准;11. 印件加印,出蓝纸经相关人员校对确认后,|再出CTP版印刷;CTP输出中心流程作业指导书f.锁线胶装200g双铜纸可以12P套好锁线,放在第一首,210g双铜纸或200g哑粉纸以上最多只能8P锁线,4P锁线放最后,太厚不能套需要压痕;g. 横式、竖式16开封面和需要过胶的封面书头至少留-1cm,方便过胶,同时胶装封面书脚也要尽大留,方便过胶;h. 无线胶装、锁线胶装书40P以下(含40P)157g双铜纸,157g哑光粉,四开折页有3手纸以上胶装最小书脊位要有3mm3. 保持CTP版面干净,不划花、折痕、烂网、网线不符及拼版错误;B.质量记录1. 参照《CTP版材使用日报表》、《EPSON数码样耗材使用日报表》、《HP蓝纸样耗材使用日报表》。
第六章CTP作业规范第一节CTP作业流程图一﹑CTP作业流程图二﹑后端服务器示意图1.NTV2003和HKFS里的 impo-GD01/GD02存放的为新书的大版文件。
2.输出用的(.ICF)文件一般发到各驱动器3.0的preps活页夹中﹐而Quantum则发到Quantum1.0中的preps活页夹中。
3.后端Rip04.1.0﹑Rip04.1.1﹑Rip04.1.2﹑Rip04.1.3使用空间不能超于80%﹐空间由指定人员跟进和整理。
4.各印件的存放位置由DTP发排人员视后端各服务器所剩空间大小而定。
第二节CTP作业过程CTP分为拼版员和出版员﹐负责印前中心拼版﹐输出蓝纸﹑EPSON﹑菲林﹑PS 版﹐负责出版机﹑冲片机﹑照排机等设备的保养和维护。
CTP所用的后端服务器有rip04.1.0﹑rip04.1.1﹑rip04.1.2﹑rip04.1.3﹐前端服务器NTV2003﹑HKFS。
具体每个印件的存放位置需查看“印前中心工程单”里的“后端路径”所指的路径。
一﹑生产安排1﹑CTP人员在作业时﹐需根据CTP生产预定表及CTP负责人的安排进行生产作业。
2﹑CTP人员在每天下班前十五分钟整理好手头做的稿件并做好记录﹐交于CTP 负责人﹐由CTP负责人安排稿件交接工作。
二﹑拼版员作业过程1﹑接稿(1)DTP将需要拼版﹑打大版EPSON﹑蓝纸印件的工单﹑客来样书﹑蓝纸等交于拼版员﹐如有问题可与数据员沟通。
(2)需拼大版的印件工单至少包括“印前中心工程单”和“影﹑拼制作指示”﹐如接稿时发现无此两样工单拒绝接稿。
(3)拼版员接到稿件后﹐须认真审核工单内容﹐清点客来资料﹐如发现客来资料有缺损或工单指示不明确时须及时将数据退回数据员并协商解决﹔(4)审核﹑清点资料无误之后﹐将工单夹入拼版夹中待拼版﹐客来样书﹑蓝纸等自行保管好。
2﹑拼版a.建立Template﹕根据影﹑拼制作指示要求对各参数进行设置﹕Template的命名按工程单印号﹐装订方式按工单要求。
====================================================== ===========友情提示:有机友回帖说遇到“爆音”问题,这个问题大致上是由于CPU和GPU的频率波动导致系统的DPC延迟过大造成音频延迟,我是这样解决的,开机按F2去BIOS里将CPU的“Dynamic Overclocking Technology”功能关闭,重启后进入桌面后将“电源管理”改为“高性能”,然后去下NV的256系列WHQL版显卡驱动(最新版本258.96),最好其他硬件的驱动也保持最新,这样基本就不会有爆音了,你可以用DPC LatencyChecker检查下你的系统DPC延迟,我现在最多就2000.(超过2000的一定会有爆音)====================================================== =======================I.前言:本帖不定期更新,只要DELL官方更新我一定尽快测试新驱动并提供下载,【希望友友多多反馈是否成功哦~让更多1330&1530和其他戴尔友友用上最新的IDT驱动~】尽管添加了很多机型,但由于没有相应的机型测试,所以请自测~测试如可用请回帖告诉大家~====================================================== =======================II.笔记本支持型号及声明:本帖驱动只支持Vista&win7(32&64位),具体支持以下机型(M1530肯定支持,本人就是M1530,其他机型请自测):DELL XPS - M1330, M1530;DELL Vostro - 1400, 1520;(不一定支持)DELL Studio - 1555, 1557, 1558, 1747, 1749;DELL Inspiron - 1545, 1440, 1750, M5010, N5010;DELL Studio XPS - 1640, 1645;如果你的本本不是以上型号但你的硬件ID符合帖子下方的“硬件ID列表“那也同样可以安装本帖的驱动。
安装Trendsetter 800一、安装场地要求1、占地要求2、环境条件(1)温度:17℃ - 30℃(2)湿度:20% - 80%RH(非凝结)(3)地板:地板必须平整,且不会有强烈震动;地板必须水平,沿Trendsetter设备占地的误差不超过 职±6.35 毫米;地面必须坚实,最好由水泥制成;地板必须要刷油漆,以防静电。
(4)供电:机器在工作时总功率约为2600W(包含吸尘器),CTP主机待机时的功率约600W,工作时约1100W。
准备一台6KW或以上的在线式UPS电源。
准备一条专用电线,确保零地电压在2V以下。
(5)供气:Trendsetter输出设备需要清洁、干燥、无油、无尘、湿度低(30%以下)气源,工作时气压不能低于0.6Mpa。
准备一台空压机,一台干燥机。
(6)电话:用户必须保留一条工作站专用的(其他设备不得占用此线路)“直拨”模拟电话线或宽带因特网联连接,用来进行远程支持。
(7)网络:三个千兆网卡,一个用于控制CTP,一个用于局域网,一个用于远程控制。
二、工具物品准备序号 工具作用1 卷尺 测量场地、确定安装位置。
2 公制内六角 拆后门、调激光头等。
3 “一”字螺丝刀 联接吸尘器气管,需要固定。
拆木箱等。
4 “十”字螺丝刀 接电源线。
5 斜口钳、尘嘴钳 接电源线。
6 界纸刀 接包装盒。
7 活动扳手 拆木包装箱、调水平。
8 万用表 测量电压。
9CTP 专用锁匙屏蔽所有lock。
10软 件Win2000\2003+补丁安装盘 IE6.0升级包+系统安全补丁Windows install 3.0软件 Framework1.1软件Intell Pro100/1000网卡驱动 Controlled Release3.0软件三、CTP 硬件安装过程1、约好吊车或叉车、货车。
(1)机器规格尺寸如下表: (2)一套Trendsetter 800 CTP 由CTP 主体和碎片清除柜两个组件组成。
E-Bike 简易说明书文件标识E-Bike简易说明书当前版本V1.0 联系方式***********************作者Carpe 撰写日期2022.04.25审核者Orange Cai 审核日期版本历史版本日期描述作者V1.0 2022.04.25 建立文档Carpe Tan目录一、方案简介 (1)二、方案功能介绍 (1)2.1 双核通信功能 (1)2.2 图形加速功能 (1)2.2.1 PXP 模块 (1)2.2.2 LCDIFv2 模块 (1)2.2.3 VGLite 模块 (1)2.3 方案界面功能 (2)2.3.1 主页界面 (2)2.3.2 导航界面 (3)2.3.3 仪表界面 (4)2.3.4 胎压界面 (5)2.3.5 音乐界面 (6)2.3.6 图表界面 (7)三、开发环境介绍 (8)3.1 硬件主要接口说明 (8)3.2 软件开发环境介绍 (11)3.2.1 GUI Guider GUI 开发工具 (11)3.2.2 Visual Studio平台LVGL 模拟器 (12)3.2.3 MCUXpresso IDE (14)3.2.4 MCUXpresso SDK 生成器 (15)四、操作说明 (17)4.1 下载程序 (17)4.1.1 导入工程 (17)4.1.2 工程编译 (19)4.1.3 硬件连接 (19)4.1.4 下载程序 (20)4.2 E-Bike DEMO 使用操作 (21)一、方案简介该方案基于NXP i.MX RT1170 的汽车仪表盘方案,方案采用开源轻量级显示图形库LVGL,液晶屏分辨率为720x1280,方案采用通用图形加速引擎、矢量图形处理、多图层优化等策略,优化显示效果提高帧率。
方案采用双核策略,高性能的Cortex-M7 核作为主核专注于图像显示处理,高能效的Cortex-M4 作为从核通过CAN 总线接收速度、里程、电量等车辆信息,再通过MU(Messaging Unit)数据传递单元传输至主核并显示于仪表界面。
CTP综合交易平台教程基本介绍一、系统简介交易托管系统 API 是一个基于 C++的类库, 通过使用和扩展类库提供的接口来实现相关交易功能,包括报单与报价的录入、报单与报价的撤销、报单与报价的挂起、报单与报价的激活、报单与报价的修改、报单与报价的查询、成交单查询、投资者查询、投资者持仓查询、合约查询、交易日获取等。
支持 MS VC 6.0,MS 2003 编译器。
需要打开多线程编译选项/MT。
二、体系结构交易员 API 使用建立在 TCP 协议之上 FTD 协议与交易托管系统进行通讯,交易托管系统负责投资者的交易业务处理。
2.1.通讯模式FTD 协议中的所有通讯都基于某个通讯模式。
通讯模式实际上就是通讯双方协同工作的方式。
FTD 涉及的通讯模式共有三种:l 对话通讯模式l 私有通讯模式l 广播通讯模式对话通讯模式是指由会员端主动发起的通讯请求。
该请求被交易所端接收和处理,并给予响应。
例如报单、查询等。
这种通讯模式与普通的客户/服务器模式相同。
私有通讯模式是指交易所端主动,向某个特定的会员发出的信息。
例如成交回报等。
广播通讯模式是指交易所端主动,向市场中的所有会员都发出相同的信息。
例如公告、市场公共信息等。
通讯模式和网络的连接不一定存在简单的一对一的关系。
也就是说,一个网络连接中可能传送多种不同通讯模式的报文,一种通讯模式的报文也可以在多个不同的连接中传送。
无论哪种通讯模式,其通讯过程都如图 1 所示本接口暂时没有使用广播通信方式。
2.2.数据流交易托管系统支持对话通讯模式、私有通讯模式、广播通讯模式:对话通讯模式下支持对话数据流和查询数据流:对话数据流是一个双向数据流,交易托管系统发送交易请求,交易系统反馈应答。
交易系统不维护对话流的状态。
系统故障时,对话数据流会重置,通讯途中的数据可能会丢失。
查询数据流是一个双向数据流,交易托管系统发送查询请求,交易系统反馈应答。
交易系统不维护查询流的状态。
穿透式监管CTPAPI使用说明文档修订历史记录内容申明目录第1章引言 (2)1.1实现目的 (2)1.2背景 (2)1.3定义 (2)第2章流程设计 (3)2.1终端认证方案 (3)2.1.1 背景条件 (3)2.1.2 appid对应的授权码分发流程 (3)2.1.3 登录前认证 (4)2.2使用CTP交易API进行终端信息采集 (6)2.2.1 直接使用CTP交易API直连模式 (6)2.2.2 使用中继服务器操作员登录模式 (8)2.2.3 使用中继服务器多对多登录模式 (11)第3章CTP API使用说明 (12)3.1采集API使用说明 (12)3.1.1 采集API说明 (12)3.2T RADER API (12)3.2.1 穿透式监管涉及到的API (12)3.2.2 客户使用流程 (14)第1章引言1.1 实现目的简要描述CTP对于终端数据采集和终端认证的实现方案。
用于指导终端厂商正确使用CTP的交易API和采集API。
1.2 背景证监会发布《关于进一步加强期货经营机构客户交易终端信息采集有关事项的公告》/pub/zjhpublic/zjh/201807/t20180709_340951.htm监控中心发布的《期货公司客户交易终端信息采集及接入认证技术规范》关于进一步加强期货经营机构客户交易终期货公司客户交易终端信息采集及接入认1.3 定义第2章穿透式监管方案设计2.1 终端认证方案2.1.1背景条件每个期货终端软件需要向期货公司申请自己的appid。
中继服务器软件需要向期货公司申请自己的relayappid。
2.1.2appid对应的授权码分发流程期货公司确认终端软件集成了正确的数据采集模块后,为该appid的终端软件分配授权码。
终端软件需要保护好自己的appid和授权码,防止被其他软件盗用。
2.1.2.1 直连终端认证流程对于直接连接期货公司交易柜台的终端,期货公司确认终端软件集成了正确的数据采集模块后。