Monotosh Das wrote:
> Hi all,
> I am a new user of RTAI, RTnet and even Linux.
> I am using rtai-3.4-cv rtnet-0.9.8 and linux-2.6.17.
> I want to *receive* UDP/IP data in a simple periodic fashion with sampling
> time constraint of 1ms. I am using the RTAI lxrt in hard real time mode.
> I have followed the codes given in the example and put the
> rt_dev_recv(sockfd, msgStr,sizeof(msgStr), MSG_DONTWAIT) in a periodic task.
> the segments are as follows:
> static struct sockaddr_in local_addr;static struct sockaddr_in
> server_addr;static void *SendRcvFun(void *arg){ RT_TASK *handler;
> //local handler static struct { unsigned long indx; RTIME
> time; } msg = {0,0}; int sockfd = 0; int ret = 0; char
> msgStr[100] = "Hello world"; /* Set variables to zero. */
> memset(msgStr, 0, sizeof(msgStr)); memset(&local_addr, 0, sizeof (struct
> sockaddr_in)); memset(&server_addr, 0, sizeof(struct sockaddr_in));
> /* Check arguments and set addresses. */
> local_addr.sin_family = AF_INET;
> local_addr.sin_addr.s_addr = INADDR_ANY; local_addr.sin_port =
> htons(11000);//htons(atoi(11000));
> server_addr.sin_family = AF_INET; inet_aton("139.30.6.66",
> &server_addr.sin_addr); server_addr.sin_port = htons(11000);
>
> rtf_create(FIFO, 2000); mlockall(MCL_CURRENT | MCL_FUTURE); sockfd
> = rt_dev_socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (sockfd < 0) {
> printf("Error opening socket: %d\n", sockfd); exit(1); }
> // if (!(handler=
> rt_task_init_schmod(nam2num("SRTSK"), 0, 0, 0,SCHED_FIFO, 0xFF))) {
> printf("CANNOT INIT SendRcvFun\n"); rt_dev_close(sockfd);
> exit(1); } rt_set_periodic_mode(); start_rt_timer(0);
> period = start_rt_timer(nano2count(TIMERTICKS));
> rt_task_make_periodic(handler, rt_get_time()+period, period);
> rt_make_hard_real_time(); /* Bind socket to local address specified as
> parameter. */ ret = rt_dev_bind(sockfd, (struct sockaddr *) &local_addr,
> sizeof(struct sockaddr_in)); /* Specify destination address for socket;
> needed for rt_socket_send(). */ rt_dev_connect(sockfd, (struct sockaddr *)
> &server_addr, sizeof(struct sockaddr_in)); //ret = rt_dev_recv(sockfd,
> msgStr, sizeof(msgStr), 0); /* Send a message. */ rt_dev_send(sockfd,
> msgStr, sizeof(msgStr), MSG_DONTWAIT); //rt_dev_recv(sockfd, msgStr,
> sizeof(msgStr), MSG_DONTWAIT); //ret = rt_dev_sendto(sockfd, msgStr,
> sizeof(msgStr), 0); endSendRcvFun = 0;
> while (!endSendRcvFun) { rt_dev_send(sockfd, msgStr,
> sizeof(msgStr), MSG_DONTWAIT); ret = rt_dev_recv(sockfd, msgStr,
> sizeof(msgStr), MSG_DONTWAIT);
> msg.indx = ret; msg.time = rt_get_time_ns();
> rtf_put(FIFO, &msg, sizeof(msg)); //printk("h");
> rt_task_wait_period(); } stop_rt_timer(); rt_make_soft_real_time();
> rt_dev_close(sockfd); rt_task_delete(handler); rtf_destroy(FIFO);
> printf("deletedTask\n"); return 0;}
>
> Running this code gives an error that the LXRT has changed mode and getting
> hanged. Could anybody please help me in this regard.
> _Monotosh Das_
> As you can see, your code is hopelessly line-wrapped. Please us a sane mail client and don't post HTML. Jan
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________ RTnet-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rtnet-users

