is there direct way to make a contract on either the main or test net to communicate with a contract on the other net?
This could be generalized as asking if a contract on private chain can communicate with another one contracts.
Ethereum Stack Exchange is a question and answer site for users of Ethereum, the decentralized application platform and smart contract enabled blockchain. It only takes a minute to sign up.Sign up to join this community
test-net are two separate blockchains, therefore they cannot share same contract state.
Technically, its as different as Bitcoin blockchain and Ethereum blockchain. Now btc-relay made it possible to interchange values between them. People made btc-relay because the world needs it.
In your case there is no real reason to communicate with a test-net from a main-net.
Test-netis for testing, and testing only.