I recently noticed that over night my Arduino MEGA, that communicates with a compressor via RS232 doesn't receive any data from it anymore.
In normal operation, it sends a datarequest command every 10 seconds to the compressor and it answers.
I use the "millis()" function to time the communication, but this shouldn't get stuck after less then 24 hours? Could a regular software reset solve the issue?
If possible, you should always post code directly in the forum thread as text using code tags:
Do an Auto Format (Tools > Auto Format in the Arduino IDE or Ctrl + B in the Arduino Web Editor) on your code. This will make it easier for you to spot bugs and make it easier for us to read.
In the Arduino IDE or Arduino Web Editor, click on the window that contains your sketch code.
Press "Ctrl + A". This will select all the text.
Press "Ctrl + C". This will copy the selected text to the clipboard.
In a forum reply here, click on the reply field.
Click the </> button on the forum toolbar. This will add the forum's code tags markup to your reply.
Press "Ctrl + V". This will paste the sketch between the code tags.
Move the cursor outside of the code tags before you add any additional text to your reply.
Repeat the above process if your sketch has multiple tabs.
This will make it easy for anyone to look at it, which will increase the likelihood of you getting help.
If the sketch is longer than the 9000 characters maximum allowed by the forum, then it's OK to add it as an attachment. After clicking the "Reply" button, you will see an "Attachments and other settings" link.
When your code requires a library that's not included with the Arduino IDE please post a link (using the chain links icon on the forum toolbar to make it clickable) to where you downloaded that library from or if you installed it using Library Manger (Sketch > Include Library > Manage Libraries in the Arduino IDE or Libraries > Library Manager in the Arduino Web Editor) then say so and state the full name of the library.
Define "regular software reset"! Although there are possibilities to generate a software reset, there's no "regular" way to do it.
I guess you mean the hardware watchdog. This is the last resort if everything else don't work. The way you describe it I guess your code has an error in it. As you failed to post your code it's impossible for us to help you further.
The millis() function is most probably not the reason for your problems.