4.0.3a 冰dk天赋赋

您好, []|
4.0.3a新增宠物 小树人“阿萎”获取攻略
[导读]树人宠物:阿萎,特殊效果:召唤出来时个头约有狼人的一半多高,一段时间后逐渐缩小,碰到较深的水时会提示它吸收了水分,长回原来的尺寸。
专稿,转载请注明出处,违者必究!4.0.3a新增宠物小树人“阿萎”——会变大变小阿萎这个宝宝有个很有趣的特点。当他遇到水的时候会长高,如下图可以和玩家角色一般大小。然而如果长时间没有水滋润的话,阿萎会越变越小。阿菱应该如何获得呢?部落玩家可以前往黑海岸直接和NPC购买;联盟玩家则需要完成一系列的任务才能得到这个小宠物。下面是部落玩家的“阿萎”获取指南:部落玩家可以黑海岸的北部的一个山洞里去直接找NPC购买坐标是(56.20 )虽然这个山洞的口有点隐秘……被瀑布挡着,留心一点的话,应该很好找到。在洞的最深处有一个亡灵的药剂师,和他对话就可以购买。话说如果在洞里没有找到这个人的话,可以稍微等一下。因为这个npc同时也是联盟方的一个任务。经常会被联盟玩家杀死……昨天腾讯小编亲眼见到他2次被杀……下一页:联盟阵营4.0.3a新增宠物 小树人“阿萎”获取攻略相关新闻:
读完这篇文章后,您心情如何?
[责任编辑:phyllisliu]
(请登录发言,并遵守)
如果你对游戏频道有任何意见或建议,请到交流平台反馈。【】
单机游戏全球网游每日要闻
Copyright & 1998 - 2017 Tencent. All Rights ReservedSignalP 4.0 Server
SignalP 4.0 server predicts the presence and location of signal peptide
cleavage sites in amino acid sequences from different organisms: Gram-positive
prokaryotes, Gram-negative prokaryotes, and eukaryotes. The method incorporates
a prediction of cleavage sites and a signal peptide/non-signal peptide
prediction based on a combination of several artificial neural networks.
of this server.
All the previous versions are available on line, for comparison and
reference.
New: ePrint of the SignalP 4.0 paper is available, see .
SUBMISSION
Paste a single amino acid sequence or several sequences in
format into the field below:
Submit a file in
format directly from your local disk:
Organism group
Eukaryotes
Gram-negative bacteria
Gram-positive bacteria
Input sequences may include TM regions
Input sequences do not include TM regions
No graphics
PNG (inline)
PNG (inline)
and EPS (as links)
Output format
Short (no graphics)
All - SignalP-noTM and SignalP-TM output (no graphics)
Optional - User defined D-cutoff values (default )
D-cutoff for SignalP-noTM networks
D-cutoff for SignalP-TM networks
Truncate sequence
Default: Truncate sequence to a length of 70 aa - 0 means no truncation
Restrictions:
At most 2,000 sequences and 200,000 amino
each sequence not more than 6,000 amino acids.
Confidentiality:
The sequences are kept confidential and will be deleted
after processing.
Access to the paper: if you have a personal or institutional subscription to
Nature Methods, use the doi: link above. If not, use the ePrint link below:
Access to the supplementary materials:
Other relevant papers:
Original paper (version 1.0):
Identification of prokaryotic and eukaryotic signal peptides
and prediction of their cleavage sites.
Henrik Nielsen, Jacob Engelbrecht, S&ren Brunak
and Gunnar von Heijne.
Protein Engineering, 10:1-6, 1997.
View the .
SignalP-HMM (version 2.0):
Prediction of signal peptides and signal anchors by a hidden
Markov model.
Henrik Nielsen and Anders Krogh.
Proceedings of the Sixth International Conference on Intelligent
Systems for Molecular Biology (ISMB 6),
AAAI Press, Menlo Park, California, pp. 122-130, 1998.
View the .
Version 3.0:
Improved prediction of signal peptides: SignalP 3.0.
Jannick Dyrl&v Bendtsen, Henrik Nielsen,
Gunnar von Heijne and S&ren Brunak.
J. Mol. Biol., 340:783-795, 2004.
View the .
Download the
Paper about using SignalP and other
protein subcellular localization prediction methods:
Locating proteins in the cell using TargetP,
SignalP, and related tools
Olof Emanuelsson, S&ren Brunak, Gunnar von Heijne, Henrik Nielsen
Nature Protocols 2:953-971 (2007).
Access the .
PORTABLE VERSION
Would you prefer to run SignalP at your own site? SignalP 4.0 is available
as a stand-alone software package, with the same functionality as the service
above. Ready-to-ship packages exist for Mac OS X and
the most common UNIX platforms. There is a
other users are requested to contact CBS Software Package
Manager at .
GETTING HELP
Scientific problems: &&&&&&
Technical problems: &&&&&&
This file was last modified
Thursday 5th 2017f January :24 GMT2016第三届物联网大会
智能后视镜产品方案对接会
中国LED智能照明高峰论坛
第三届?无线通信技术研讨会
第二届?中国IoT大会
ETFo智能安防技术论坛
移入鼠标可放大二维码
由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(4) - 全文
来源:电子发烧友 作者:ONeal日 10:08
[导读] 本文将结合TI推出的CC254x SoC 系列,讲解从环境的搭建到蓝牙4.0协议栈的开发来深入学习蓝牙4.0的开发过程。##第十七节 协议栈LCD显示实验。##第十八节 协议栈UART实验。##第十九节 协议栈五向按键。##第二十节 协议栈Flash数据存储。
  本系列教程将结合推出的CC254x SoC 系列,讲解从环境的搭建到蓝牙4.0协议栈的开发来深入学习蓝牙4.0的开发过程。教程共分为六部分,本文为第四部分:
  第四部分知识点:
  第十六节 协议栈LED实验
  第十七节 协议栈LCD显示
  第十八节 协议栈UART实验
  第十九节 协议栈五向按键
  第二十节 协议栈Flash数据存储
  有关 的CC254x芯片介绍,可点击下面链接查看:
  同系列资料推荐:
  有关本文的工具下载,大家可以到以下这个地址:
  第十六节 协议栈LED实验
  的协议栈中在HAL层已经有了LED的驱动,我们只需要针对我们的开发板进行配置即可,我们的开发板有两个LED,分别对应P1.0和P1.1。这个在裸机开发的时候已经介绍了。
  为了保持协议栈原有的代码不变,我们在BLE-CC254x-1.4.0\Components\hal\target目录下新建一个文件夹,使它适应我们的开发板。
  打开LED实验工程LEDExample,选择MT254xboard,并且在工程配置中要定义HAL_LED=TRUE,下载到开发板运行,可以看到两个LED同时在闪烁。
  那我们的实现代码在哪里呢?其实在协议栈中实现这个很简单,在启动事件中我们调用了一个HalLedSet函数,并且设置了两个LED同时闪烁。
  就是这么简单,协议栈已经把其它事情做好了,只需要我们调用设置函数即可。设置的模式总共有5种。
  #define HAL_LED_MODE_OFF 0x00 // 关闭LED
  #define HAL_LED_MODE_ON 0x01 // 打开LED
  #define HAL_LED_MODE_BLINK 0x02 // 闪烁一次
  #define HAL_LED_MODE_FLASH 0x04 // 不断的闪烁,最多255次
  #define HAL_LED_MODE_TOGGLE 0x08 // 翻转LED状态
  为了适应不同的需求,我们可能需要更改LED的输出引脚,如图板级配置在hal_board_cfg.***件中。
  这里我们的开发板只有两个LED,所以我们在这里根据开发板的实际情况修改相应的IO口。
  第十七节 协议栈LCD显示实验
  打开LCD12864的实验工程,一样的在工程配置中打开LCD,选择MT254xboard然后直接编译下载,我们可以看到LCD上已经有显示了。
  这些显示来自哪里呢?
  在初始化函数中可以看到图中的函数调用,这里是将字符串显示到LCD的第一行。
  在事件回调函数中可以看到这里将本机地址显示到第二行,将字符串Inialized显示到第三行,但是为什么我们在第三行没有看到这行字符串呢?而显示的字符串是Advertising ,这是因为系统启动后运行非常快,在我们还没反应过来的时候已经进入了广播状态,并且将原来的字符串覆盖了,所以我们最后只能看到Advertising 了。
  HalLcdWriteString是将第一个参数指向的字符串显示到第二个参数指定第几行中,例如我们需要在第5行显示系统启动信息,我们可以在启动事件中,添加如下代码。
  这里我们来介绍一下Lcd驱动的实现,在Hal_lcd.***件中申明了以下函数,这些函数的功能都有英文注释,这里我就不再累述了。
  * Initialize LCD Service
  extern void HalLcdInit(void);
  * Write a string to the LCD
  extern void HalLcdWriteString ( char *str, uint8 option);
  * Write a value to the LCD
  extern void HalLcdWriteValue ( uint32 value, const uint8 radix, uint8 option);
  * Write a value to the LCD
  extern void HalLcdWriteScreen( char *line1, char *line2 );
  * Write a string followed by a value to the LCD
  extern void HalLcdWriteStringValue( char *title, uint16 value, uint8 format, uint8 line );
  * Write a string followed by 2 values to the LCD
  extern void HalLcdWriteStringValueValue( char *title, uint16 value1, uint8 format1, uint16 value2, uint8 format2, uint8 line );
  * Write a percentage bar to the LCD
  extern void HalLcdDisplayPercentBar( char *title, uint8 value );
  协议栈中很多地方都调用了这些函数,我们如果要使我们的硬件能够兼容协议栈,被协议栈使用,就需要实现这些函数的定义,当然,为了适应我们的开发板,我已经实现了这些函数,实现都在hal_lcd.c中。
  第十八节 协议栈UART实验
  协议栈中已经用了串口的驱动,我们要做的只是对串口进行初始化,然后就可以进行串口数据的收发了。
  用使用串口,第一步,需要打开使能串口功能,通过配置工程来实现,这里注意,我们现在不使用USB的CDC类来实现串口,所以HAL_UART_USB=FALSE。
  HAL_UART=TRUE
  HAL_UART_USB=FALSE
  要使用串口必须先初始化相应的串口,那该如何初始化呢?在Hal_uart.***件中我们可以看到如下函数。
  uint8 HalUARTOpen(uint8 port, halUARTCfg_t *config);
  这个函数就是用来初始化串口的,这个函数有两个参数,第一个指定串口号,第二个是串口的配置参数。我们来看看这个结构体的定义:
  typedef struct
   // 配置与否
  uint8 baudR // 波特率
  bool flowC // 流控制
  uint16 flowControlT
  uint8 idleT // 空闲时间
  halUARTBufControl_ // 接收
  halUARTBufControl_ // 发送
  bool intE // 中断使能
  uint32 rxChRvdT // 接收数据时间
  halUARTCBack_t callBackF // 回调函数
  }halUARTCfg_t;
  这个结构体成员很多,但是我们在使用串口的时候并不需要使用所有的成员。
  void Serial_Init(void)
  halUARTCfg_t SerialCfg = {0};
  SerialCfg.baudRate = HAL_UART_BR_115200; // 波特率
  SerialCfg.flowControl = HAL_UART_FLOW_OFF; // 流控制
  SerialCfg.callBackFunc = SerialCb; // 回调函数
  SerialCfg.intEnable = TRUE;
  SerialCfg.configured = TRUE;
  HalLcdWriteString( &Open Uart0&, HAL_LCD_LINE_5 ); // 在第5行显示启动信息
  HalUARTOpen(HAL_UART_PORT_0, &SerialCfg);
  HalUARTWrite(HAL_UART_PORT_0, &Hello MT254xBoard\r\n&, osal_strlen(&Hello MT254xBoard\r\n&));
  在串口回调函数中我们只做一件事,将串口接收到的数据显示到LCD中并且原样的从串口输出。回调函数的实现如下:
  static void SerialCb( uint8 port, uint8 events )
  uint8 RxBuf[64]={0};
  if((events & HAL_UART_TX_EMPTY)||( events & HAL_UART_TX_FULL )) // 发送区满或者空
  uint16 usRxBufLen = Hal_UART_RxBufLen(HAL_UART_PORT_0); // 读取接收据量
  usRxBufLen = MIN(64,usRxBufLen);
  uint16 readLen = HalUARTRead(HAL_UART_PORT_0, RxBuf, usRxBufLen);
  HalUARTWrite(HAL_UART_PORT_0, RxBuf, usRxBufLen);
  实验现象,从实验现象中可以看到,一开始在串口中输出了一个标志字符串,然后我们通过串口发送了,然后数据原样的从串口输出了,这和我们预期的结果是一样的。
  但是我们发现LCD上的显示和我们预期的不一样,LCD上只显示了6789,前面的数据并没有显示,这是怎么一回事呢?进行单步调试可以发现,我们发送一次数据,回调函数被回调了两次,第一次回调只接受到了012345,第二次回调接收到了6789,而在LCD上的显示第二次覆盖了第一次的显示,所以我们会看到这种现象,解决的办法,我们需要定义一个数据帧的时间间隔,当接收数据的间隔超过了此间隔就认为接收结束。
  下面我们改写接收处理,我们在接收到数据后开启定时器,定时5ms这样,当接收间隔大于5ms后,我们就可以在定时事件中处理串口接收到的数据。
  static void SerialCb( uint8 port, uint8 events )
  if((events & HAL_UART_TX_EMPTY)||( events & HAL_UART_TX_FULL )) // 发送区满或者空
  uint16 usRxBufLen = Hal_UART_RxBufLen(HAL_UART_PORT_0); // 读取接收据量
  if(usRxBufLen)
  usRxBufLen = MIN(128,usRxBufLen);
  uint16 readLen = HalUARTRead(HAL_UART_PORT_0, &SerialRxBuf[RxIndex], usRxBufLen); // 读取数据到缓冲区
  RxIndex += readL
  readLen %= 128;
  osal_start_timerEx(simpleBLEPeripheral_TaskID, UART_EVENT, 5); // 启动定时器
  事件处理代码:
  if ( events & UART_EVENT )
  HalLcdWriteString( (char*)SerialRxBuf, HAL_LCD_LINE_6 ); // 在第5行显示启动信息
  HalUARTWrite(HAL_UART_PORT_0, SerialRxBuf, osal_strlen(SerialRxBuf));
  osal_memset(SerialRxBuf, 0, 128);
  return (events ^ UART_EVENT);
  经过这样的处理后,可以发现我们刚刚的问题已经解决了。
  到这里串口已经可以正常使用了,为了更加方便的使用串口,我在这里添加一个函数实现标准C中printf,这样更有利于我们输出。
  int SerialPrintf(const char*fmt, 。。。)
  uint32 ulL
  char *pBuf = (char*)osal_mem_alloc(PRINT_BUF_LEN); // 开辟缓冲区
  va_start(ap, fmt);
  ulLen = vsprintf(pBuf, fmt, ap); // 用虚拟打印函数实现
  va_end(ap);
  HalUARTWrite(HAL_UART_PORT_0, (uint8*)pBuf, ulLen); // 从串口0输出
  osal_mem_free(pBuf); // 释放内存空间
  return ulL
  我们可以像使用C标准中的printf来使用这个函数,例如我们将LCD的输出全部导向串口的输出,在HalLcdWriteString的实现中添加串口输出代码,如下图:
  重新编译并且烧录后可以看到LCD的输出和串口的输出是一样的了。
  第十九节 协议栈五向按键
  和前面几个一样,按键的驱动在协议栈中也已经有了,我们只需要做一些小的修改,使它适应我们的开发板即可。
  1. 修改工程配置,使能按键功能。
  2. 在我们的工程中要使用按键功能,仅仅打开配置选项是不够的。因为协议栈代码默认只有MINIDK开发板才有按键。
  从这里可以看到(类似的地方有很多),如果要使能按键功能还需要定义CC2540_MINIDK,但是阅读整个协议栈你会发现,定义 CC2540_MINIDK后还会打开其它的功能,而那些功能并不是我们想要的,所以在这里我们使用另外一种方法来实现。我们定义我们的开发板也能使用按键功能,所以在工程配置中添加MT254xboard=TRUE,然后在按键功能有宏开关的地方加入这个条件。具体位置参见代码。
  按下相应的按键后可以看到串口输出相应的按键值。五向按键的工作原理在裸机开发的时候已经讲过了,在协议栈中已经有相应的驱动代码了,无需我们编写,只需要按照实际情况改写即可。例如我们的开发板每个按键对应的电压值和原来的值并不一样,所以我们这里改写了每个按键值的电压范围。
  uint8 halGetJoyKeyInput(void)
  /* The joystick control is encoded as an analog voltage.
  * Read the JOY_LEVEL analog value and map it to joy movement.
  uint16
  uint8 ksave0 = 0;
  uint8 ksave1;
  /* Keep on reading the ADC until two consecutive key decisions are the same. */
  ksave1 = ksave0; /* save previouse key reading */
  adc = HalAdcRead (HAL_KEY_JOY_CHN, HAL_ADC_RESOLUTION_10);
  if ((adc 》= 2) && (adc 《= 95)) // 85 right
  ksave0 |= HAL_KEY_RIGHT;
  else if ((adc 》= 96) && (adc 《= 110)) // 101 cent
  ksave0 |= HAL_KEY_CENTER;
  else if ((adc 》= 111) && (adc 《= 140)) // 127 up
  ksave0 |= HAL_KEY_UP;
  else if ((adc 》= 141) && (adc 《= 200)) // 170 left
  ksave0 |= HAL_KEY_LEFT;
  else if ((adc 》= 201) && (adc 《= 300)) // 257 down
  ksave0 |= HAL_KEY_DOWN;
  } while (ksave0 != ksave1);
  return ksave0;
  第二十节 协议栈Flash数据存储
  CC254x自带了256K Flash,这256K的储存空间不仅可以储存代码,也可以储存用户的数据,协议栈自带了SNV管理代码,我们只需要学会使用即可。
  SNV的使用只有两个函数,分别是读函数osal_snv_read和写函数osal_snv_write,在SNV的储存中,储存的每个数据都有一个唯一的ID,SNV也正是利用这个ID来管理储存在Flash中的数据,在BLE的协议栈中,蓝牙自身数据储存用了一部分ID,我们储存的数据ID不可使用这些ID,在bcomdef.h中有这些ID的定义。
  下面我们往SNV中存入串口接收到的数据,然后开发板断电重启后读取出这串字符串并通过串口发送出去,来演示SNV的断电保存。
  首先我们定义一个我们储存数据的ID,注意不能和已经有的定义冲突。
  #define BLE_NVID_USER_CFG_START 0x80 //!《 Start of the USER Configuration NV IDs
  #define BLE_NVID_USER_CFG_END 0x89 //!《 End of the USER Configuration NV IDs
  我们在启动事件中读取SNV中0x80的值并通过串口输出读取结果,如果读取成功,则会将读取结果打印到PC端,如果读取失败,则会提示读取失败。
  在串口接收事件中将接收到的数据存入SNV中,并且也进行相应的提示。
  将工程编译下载后,可以看到现象如下:
  第一次上电可以看到,提示读取数据失败了,说明第一次运行时是没有存储数据的,接下来我们通过串口发送字符串 MT254xboard SNV Test字符串。
  可以看到成功的将我们发送过去的字符存入了SNV中,那是否成功存入呢?我们将开发板断电后重启,看看第二次上电是否能够读取出我们存入的数据。
  重启后可以发现我们成功的读取出了第一次存入的数据,说明我们成功的将数据存入了SNV中。
蓝牙BLE相关文章
蓝牙BLE相关下载
协议栈相关文章
协议栈相关下载
TI公司相关文章
TI公司相关下载
来自NI(美国国家仪器公司,National Instruments)中国射频与无线通信市场开发经理姚远在第六届EEVIA年度中国ICT媒体论坛暨带来了最新的演讲主题《5G产业趋...
在今年的达沃斯会议上,许多科技企业的CEO讨论了AI对人类社会的影响,他们认为,AI不应该替代人类,而是辅助增强人类。世界经济的增长速度并不乐观,...
创新实用技术专题
版权所有 & 深圳华强聚丰电子科技有限公司

参考资料

 

随机推荐