When I change the DTR state of the serial-object in Max (send a 1 or 0),
the serial starts running again for about a minute, and freezes again...
This causes a reset of the Arduino. This is a clue that there is something wrong with the Arduino code that is related to time. One minute is 60 seconds or 60000 microseconds.
Time = millis();
Here, we do something that is related to time.
int Time = 0; // moment of interrupt
But, the millis function does not return an int, so storing the value in an int is going to cause problems. When? After 32.767 seconds.
if (millis() < (Time + 1000))
After 32,767 microseconds (32+ seconds), Time will contain a negative number. Adding 1000 to that will make it positive again until 33,767 milliseconds have elapsed. After that, Time + 1000 will be negative, and millis() never returns a negative number, so this condition will never be true.
So, it isn't that the Arduino freezes when an interrupt occurs after the Arduino has been running for about 34 seconds. It is that it simply can never do what you want it to do.
There are three things that need to be fixed. The first, obviously, is that the type of Time needs to be changed to match what millis() returns. That is unsigned long.
The second thing that needs to change is that both the main code and the ISR access Time. If Time is read to use in the if test, and an interrupt occurs before millis() is called, Time will have changed when millis() is called, and the if test will then be performed using the old Time. Time needs to be declared volatile to prevent this from happening.
state is currently declared volatile, but I can't see any reason for it to be.
The third thing that needs to be changed is the it test itself. You should never perform addition on variables that can overflow. Reorganize the statement to use subtraction, instead:
if(millis() - Time > 1000)
The reason for this is that if Time contains a very large value (just shy of rolling over) and millis() is called after rollover, millis() - Time will still return the correct interval. Your code relies on millis() being strictly larger than Time.