Find the answer to your Linux question:
Results 1 to 2 of 2
I'm trying to send a string to a serial port using: Code: #define UART 0x03f8 ... #define UART_LSR_THRE 0x20 ... void UART_send(unsigned char *data){ int i = 0, k = ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    May 2013
    Posts
    1

    Cheking THRE to send a string via serial port


    I'm trying to send a string to a serial port using:
    Code:
    #define UART    0x03f8
    ...
    #define UART_LSR_THRE 0x20
    ...
    void UART_send(unsigned char *data){
         int i = 0, k = strlen(data);
         printk("UART_send invoked, data is %s and k is %d\n", data, k);
         while(i < k){
           while( !(inb(UART + UART_LSR_THRE)) ){
                 printk("called\n");
                 schedule();
           }
           if(i < k){
                 outb(data[i++], (UART + UART_TX));
           }
        }
    }
    When trying write ABCDEF, for example, sometimes it skips letters or prints them more than once.
    My guess is that I'm not verifying the status of the THRE correctly, seeing as it's not only the wrong result, the while() being there or not doesn't seem to be doing anything.
    Any ideas? Or isn't this even the place to ask questions like this?

  2. #2
    Trusted Penguin
    Join Date
    May 2011
    Posts
    4,353
    Hello and welcome!

    Quote Originally Posted by LastOrder View Post
    Or isn't this even the place to ask questions like this?
    Aye, this be the place. Hopefully someone will come along soon to be able to help you.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •