rx java定时循环_RxJava怎么定时依次发送集合的每个元素?

b89461d2baee4afa5be1f7b89d8b3ea9.png

慕姐829404

代码用kotlin写的,写android的人不管会不会写,大概应该能看懂纯kotlin工程,非android工程,线程随便用的,android里根据你的线程不同自己考虑用不用主线程packagecom.github.caijinglong.rxjavaimportio.reactivex.Flowableimportio.reactivex.FlowableSubscriberimportio.reactivex.schedulers.Schedulersimportorg.reactivestreams.Subscriptionfunmain(args:Array){varmSubscription:Subscription?=nullvallist=arrayListOf(1,2,3,4,5)Flowable.fromIterable(list).observeOn(Schedulers.io()).subscribeOn(Schedulers.computation()).subscribe(object:FlowableSubscriber{overridefunonComplete(){}overridefunonSubscribe(s:Subscription){mSubscription=ss.request(1)}overridefunonNext(p0:Int?){println("${Date().toLocaleString()}:$p0")Thread.sleep(1000)mSubscription?.request(1)}overridefunonError(p0:Throwable?){}})Thread.sleep(5000)//为了防止退出main函数结束,实际的android工程中不会退出,这里可以不用写}日志2018-1-1515:53:38:12018-1-1515:53:39:22018-1-1515:53:40:32018-1-1515:53:41:42018-1-1515:53:42:5Processfinishedwithexitcode0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用STM32定时定时500ms循环发送2组数的代码示例: ```c #include "stm32f4xx.h" #define LED_GREEN GPIO_Pin_12 #define LED_ORANGE GPIO_Pin_13 #define LED_RED GPIO_Pin_14 #define LED_BLUE GPIO_Pin_15 #define USART_TX_PIN GPIO_Pin_9 #define USART_RX_PIN GPIO_Pin_10 USART_InitTypeDef USART_InitStruct; GPIO_InitTypeDef GPIO_InitStruct; NVIC_InitTypeDef NVIC_InitStruct; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; uint16_t data1[2] = {0x01, 0x02}; uint16_t data2[2] = {0x03, 0x04}; void GPIO_Config(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitStruct.GPIO_Pin = LED_GREEN | LED_ORANGE | LED_RED | LED_BLUE; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = USART_TX_PIN | USART_RX_PIN; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1); } void USART_Config(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); USART_InitStruct.USART_BaudRate = 115200; USART_InitStruct.USART_WordLength = USART_WordLength_8b; USART_InitStruct.USART_StopBits = USART_StopBits_1; USART_InitStruct.USART_Parity = USART_Parity_No; USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; USART_Init(USART1, &USART_InitStruct); USART_Cmd(USART1, ENABLE); } void NVIC_Config(void) { NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStruct); } void TIM_Config(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM_TimeBaseInitStruct.TIM_Prescaler = 84 - 1; TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStruct.TIM_Period = 500 - 1; TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); TIM_Cmd(TIM2, ENABLE); } void send_data(uint16_t *data, uint8_t len) { for (uint8_t i = 0; i < len; i++) { USART_SendData(USART1, data[i]); while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); } } void TIM2_IRQHandler(void) { if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update); GPIO_ToggleBits(GPIOD, LED_GREEN); send_data(data1, 2); send_data(data2, 2); } } int main(void) { GPIO_Config(); USART_Config(); NVIC_Config(); TIM_Config(); while (1); } ``` 这个程序中,我们使用了STM32的定时器2来实现定时500ms的功能。在定时器中断中,我们通过USART1串口发送了两组数据data1和data2,每组数据包含两个16位的无符号整数。我们还使用了STM32的GPIO来控制4个LED灯的亮灭。在主函数中,我们只需要调用GPIO、USART、NVIC和TIM的配置函数即可。在while循环中,我们什么也不做,只是让程序不停止运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值